Java JSF/Oracle中的日期和时区
我有一个Oracle数据库,其中有时间戳字段,但不存储时区 我们开发的一个全球JSF应用程序正在英国、美国和瑞典使用——我们同意用服务器时间保存日期,用服务器时间显示日期 我只是使用托管bean中的新日期创建日期戳,然后将它们存储在Oracle中 我在Oracle有个约会:Java JSF/Oracle中的日期和时区,java,jsf,time,timezone,Java,Jsf,Time,Timezone,我有一个Oracle数据库,其中有时间戳字段,但不存储时区 我们开发的一个全球JSF应用程序正在英国、美国和瑞典使用——我们同意用服务器时间保存日期,用服务器时间显示日期 我只是使用托管bean中的新日期创建日期戳,然后将它们存储在Oracle中 我在Oracle有个约会: 21-AUG-13 12.24.13.125000000 我希望这个日期用JSF表示。我们知道现在是服务器时间,即UTC+2 JSF和Primefaces将其表示为: 21/08/2013 11:24 所以好像要减去一个
21-AUG-13 12.24.13.125000000
我希望这个日期用JSF表示。我们知道现在是服务器时间,即UTC+2
JSF和Primefaces将其表示为:
21/08/2013 11:24
所以好像要减去一个小时
我访问了运行tomcat的linux实例,date给了我:
Thu Sep 19 16:25:45 CEST 2013
对一个新的日期实例执行System.out.println,我得到:
Thu Sep 19 15:25:45
我假设在托管bean中创建一个日期实例将使用托管tomcat的linux服务器上的日期,但是比它晚了一个小时
我知道日期没有时区成分,但假设UTC
因此,我可能正在将一个实际为UTC+2的日期读回到一个日期实例中,该实例假定这是UTC+0…然后不知何故,JSF看到服务器在UTC+2下运行,正在减去2个小时,以使我返回UTC
如果您能提供任何关于这个问题的建议,以及为什么新日期与linux Date shell值不匹配,我们将不胜感激
问候
我好的,谢谢……根据链接,这似乎让事情变得不那么混乱了:
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
jsf
JSF是否知道我的服务器是UTC+2,所以要更正为UTC,它会从我2013年9月20日的日期减去2小时,并在JSF转换期间将其推到前一天?在我看来,一个日期没有UTC组件,那么为什么它要尝试将UTC+0的日期转换为其他任何日期呢
问候
我一个简单问题的可能重复是,如何让JSF给我与Oracle中相同的日期!!告诉JSF使用哪个时区。它确实默认为UTF,正如您在副本中遇到和回答的那样。另一个可能的副本:我认为我的问题是,我正在将Oracle的UTC+2日期读回到假定UTC+0的日期实例中。。。
default system timezone is sun.util.calendar.ZoneInfo[id="Europe/Stockholm",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=119,lastRule=java.util.SimpleTimeZone[id=Europe/Stockholm,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
<h:outputLabel value="#{customerTasksBean.travelTask.travelDate}" rendered="#{customerTasksBean.renderTravel}">
<f:convertDateTime pattern="dd-MMM, yyyy" />
</h:outputLabel>