虽然将时区指定为字符串文字可以完美无缺:
<h:outputText value="#{item.dateChange}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" timeZone="Europe/Berlin"/>
</h:outputText>
通过bean提供值不起作用(不应用Timehset 1h到UTC和夏令时1h)
<h:outputText value="#{item.dateChange}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" timeZone="#{item.platform.timeZone}"/>
</h:outputText>
我尝试了以下两种方法,但没有一种方法有效:
public TimeZone getTimeZone() {
return TimeZone.getTimeZone("Europe/Berlin");
}
public String getTimeZone() {
return "Europe/Berlin";
}
我需要为用户配置时区,如何实现?
编辑: 为了确保时区对象可用:
<h:outputText value="#{item.platform.timeZone}"/>
sun.util.calendar.ZoneInfo [ID = “欧洲/柏林”,偏移量= 360万,dstSavings = 3600000,useDaylight =真,过渡= 143,lastRule = java.util.SimpleTimeZone中[ID =欧洲/柏林,偏移= 3600000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 2,startMonth = 2,朝九特派= -1,startDayOfWeek = 1,开始时间= 3600000,startTimeMode = 2,endMode = 2,endMonth = 9,endday指定= -1,一个endDayOfWeek = 1,结束时间= 3600000,endTimeMode = 2]]
或简单地说:“欧洲/柏林”在第二次尝试。
答案 0 :(得分:1)
正如Gimby所指出的,BalusC已经回答了一个类似的问题
由于f:标签的限制,需要使用customConverter。
此处提供了有关问题的详细说明以及BalsuC的示例实施: JSF convertDateTime with timezone in datatable
注意:那里提供的转换器要求bean返回描述timeZone而不是TimeZone对象的字符串。