java - 在 JSF 中显示带有客户端时区的日期时间值

标签 java jsf client richfaces

我有以下代码:

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

如何在 JSF (Richfaces) 中显示带有客户端时区的 dateTime 元素?我想我应该使用 timeZone 属性,但我应该指定什么作为它的值?

我们将不胜感激。

最佳答案

问题是您不知道客户端时区是什么来设置 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 为 medium 以便在 IE 中工作。

关于java - 在 JSF 中显示带有客户端时区的日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508373/

相关文章:

java - XSD 映射到 Java POJO

java - Eclipse:查找 Java 和 JSF/JSP 中的引用

jquery - 显示页面底部的 Primefaces 工具提示?

java - 我的基本 Java 服务器接受 3 个客户端而不是 2 个

java - JLabel 可以有 img 标签吗

java - 透明 JTextField 和 JLabel 显示背景图像

java - 当我启动 tomcat 时,我的 java 应用程序一直一遍又一遍地开始

client - OpenStack-Swift 客户端?

java - 检查几个正则表达式的字符串并说出哪个匹配

java - Eclipse 删除 "export"历史记录