JSF页面错误地反映日期 - 1天移位

ser*_*nni 6 jsf date converter

Date的DB值是:

04-OCT-10
Run Code Online (Sandbox Code Playgroud)

Bean方法返回:

Mon Oct 04 00:00:00 EEST 2010
Run Code Online (Sandbox Code Playgroud)

JSF返回:

03.10.2010
Run Code Online (Sandbox Code Playgroud)

JSF代码:

...
     <h:outputText value="#{paym.dueDate}" >
            <f:convertDateTime pattern="dd.MM.yyyy"/>
     </h:outputText>
...
Run Code Online (Sandbox Code Playgroud)

是什么原因导致JSF日期值不正确?

谢谢

Bal*_*usC 19

JSF日期转换器默认为UTC时区.但是你的日期显然是使用EEST时区存储的,这个时区比UTC早几个小时(准确地说是GMT + 3).当使用UTC时区解析这些日期时(默认情况下为JSF),您将获得数小时的回溯,因此将表示前一天.

您需要在以下位置明确指定时区<f:convertDateTime>:

<f:convertDateTime pattern="dd.MM.yyyy" timeZone="GMT+3" />
Run Code Online (Sandbox Code Playgroud)