f:convertDateTime displays wrong Date if timezone is provided by a bean
当将时区指定为字符串文字时,可以完美地工作:
1 2 3 | <h:outputText value="#{item.dateChange}"> <f:convertDateTime pattern="dd.MM.yyyy HH:mm" timeZone="Europe/Berlin"/> </h:outputText> |
bean提供的值不起作用(时间偏移1h到UTC,不应用夏令时1h)
1 2 3 | <h:outputText value="#{item.dateChange}"> <f:convertDateTime pattern="dd.MM.yyyy HH:mm" timeZone="#{item.platform.timeZone}"/> </h:outputText> |
号
我尝试了下面的两种方法,但都不起作用:
1 2 3 4 5 6 7 |
我需要为用户配置时区,如何实现这一点?
编辑:为了确保时区对象可用:
1 | <h:outputText value="#{item.platform.timeZone}"/> |
。
SudieField[ID="欧洲/柏林",DeStayLo==3600000,dStule= Java.UTILUL.SimuleTyMeSt[ ID=欧洲/柏林,偏移量=3600000,dStayLe= true,StistyValue= 0,StistMood=2,StistalOnt= -1,StaseDayOfWee= 1,StestTime= 3600000,StimeTimeMod=2,EndoMe==2,EnthOng=dayOfWeek=1,endTime=3600000,endTimeMode=2]]
或者在第二次尝试中简单地说:"欧洲/柏林"。
正如Gimby指出的,一个类似的问题已经由Balusc回答了。
由于f:tags中的限制,需要自定义转换器。
有关该问题的详细描述和Balsuc的示例实现,请参阅:JSF ConvertDateTime,数据表中有时区
注意:这里提供的转换器期望bean返回一个描述时区而不是时区对象的字符串。