Проблема в том, что вы не будете знать, какой часовой пояс клиента используется для установки атрибута 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.