primefaces calendar:错误的日期条目

时间:2011-11-06 03:48:47

标签: java netbeans primefaces

使用jsf 2.2.0。

对于所有日期,它似乎删除了一天。当我点击8 nov时,它显示11/08/2011。 但是它将2011年11月7日存储在我的托管bean中的Date字段中。

我住在新加坡,想知道这是否与时区有关。

7 个答案:

答案 0 :(得分:24)

尝试将此添加到您的web.xml

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

答案 1 :(得分:2)

如果您在调度程序中使用primefaces 5:

<p:schedule ...ignoreTimezone="false" />

答案 2 :(得分:0)

将参数-Duser.timezone=UTC添加到启动参数修复了我的问题。

总结一下: p:只有当以下参数设置时才能安排工作:

-Duser.timezone=UTC

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

答案 3 :(得分:0)

我刚刚在web.xml中添加了以下参数,问题已修复。启动服务器时,我没有包含任何命令,如-Duser.timezone = UTC,仍解决了问题。

    javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE     真正

此致 Khaleel

答案 4 :(得分:0)

也许是因为你没有插入时间。例如,在这种情况下

<p:calendar id="dateFromCalendar"
    value="#{platform.frameBean.dateFrom}" showOn="button"
    pattern="dd-MM-yyyy" timeZone="Europe/Warsaw">
</p:calendar>

小时将是实际日期的00:00。因为时区(-02:00),小时将显示为实际日期前一天的22:00。正确的做法是

<p:calendar id="dateFromCalendar"
    value="#{platform.frameBean.dateFrom}" showOn="button"
    pattern="dd-MM-yyyy HH:mm" timeZone="Europe/Warsaw">
</p:calendar>

小时将出现,因此时区将进行正确的计算

答案 5 :(得分:0)

在您的日历组件中,添加转换器并指明您的时区,例如

<p:calendar id="date">
  <f:convertDateTime timeZone="Asia/Singapore"></f:convertDateTime>
</p:calendar

答案 6 :(得分:-1)

您是否尝试过设置timezonelocate属性? 否则,您可以创建转换日期的转换器对象。 这是一个创建自定义转换器的教程:http://www.roseindia.net/jsf/customconverter.shtml