使用jsf 2.2.0。
对于所有日期,它似乎删除了一天。当我点击8 nov时,它显示11/08/2011。 但是它将2011年11月7日存储在我的托管bean中的Date字段中。
我住在新加坡,想知道这是否与时区有关。
答案 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)
您是否尝试过设置timezone
和locate
属性?
否则,您可以创建转换日期的转换器对象。
这是一个创建自定义转换器的教程:http://www.roseindia.net/jsf/customconverter.shtml