2011-06-28 42 views
4
客戶端時區

我有以下代碼:顯示日期時間值與JSF

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

如何顯示在JSF(RichFaces的)與客戶端時區這個日期元素?我想我應該使用timeZone屬性,但我應該指定它的值?

任何幫助將不勝感激。

回答

4

問題是你不會知道客戶端的時區是設置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中使用。

+0

謝謝馬克,我已經實現它使用JavaScript,但尋找更容易的解決方案。反正你的方法看起來不錯,所以我會設置你的答案爲接受:) – kardanov

+0

你也可以解釋我的原因dateStyle =「中等「的IE瀏覽器,導致它適合我的」短「價值? – kardanov

+2

當我在IE8中試用它時,像6/28/11這樣的短日期被轉換爲1911年6月28日,而不是2011年。 – Mark