Отображение значений dateTime с часовым поясом клиента в JSF - PullRequest
4 голосов
/ 28 июня 2011

У меня есть следующий код:

<h:outputText value="#{myDataBean.date}">
    <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
</h:outputText>

Как я могу отобразить этот элемент dateTime с часовым поясом клиента в JSF (Richfaces)?Я предполагаю, что должен использовать атрибут timeZone, но что я должен указать в качестве его значения?

Любая помощь будет оценена.

1 Ответ

4 голосов
/ 29 июня 2011

Проблема в том, что вы не будете знать, какой часовой пояс клиента используется для установки атрибута timeZone. Единственный способ, которым я могу придумать, это преобразовать дату в Javascript.

Преобразователь <f:convertDateTime> по умолчанию использует время UTC.

<h:body onload="setTimezoneDates();" >
    <h:form id="myform">
      <h:outputText value="#{indexBean.today}" id="mydate">
        <f:convertDateTime type="both" timeStyle="short" dateStyle="medium" />
      </h:outputText>
    </h:form>
</h:body>

А затем используйте Javascript, чтобы преобразовать дату и время UTC в локальную дату / время клиентов и заменить их на странице.

function setTimezoneDates() {
    var strDate = document.getElementById("myform:mydate").innerHTML + " UTC";
    var d = new Date(strDate);                                      
    document.getElementById("myform:mydate").innerHTML = d.toLocaleString();
}

Дата вывода все еще должна быть отформатирована, и, вероятно, есть лучший способ сделать это в Javascript. Также обратите внимание, что я должен был установить <f:convertDateTime> dateStyle на средний, чтобы это работало в IE.

...