gpt4 book ai didi

java - JSF/Oracle 中的日期和时区

转载 作者:行者123 更新时间:2023-12-01 04:21:04 25 4
gpt4 key购买 nike

我有一个 Oracle 数据库,其中有时间戳字段,但不存储时区。

我们开发的全局 JSF 应用程序已在英国、美国和瑞典使用 - 我们同意使用服务器时间保存日期,并使用服务器时间显示日期。

我只是在托管 bean 中使用 new Date() 创建日期戳,然后将它们存储在 Oracle 中。

我在 Oracle 有个约会:

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

并为新的 Date() 实例执行 System.out.println,我得到:

Thu Sep 19 15:25:45

我假设在托管 bean 中创建 Date() 实例将使用托管 tomcat 的 Linux 服务器上的日期,但晚了一个小时...

我知道日期没有时区部分,但假设 UTC...

所以我可能正在将实际上是 UTC+2 的日期读回到日期实例中,该实例假设这是 UTC+0...然后不知何故,JSF 看到服务器在 UTC+2 上运行,正在减去 2休息几个小时让我回到 UTC!!

任何关于问题所在以及为什么 new Date() 与 Linux 日期 shell 值不匹配的建议将不胜感激。

问候

最佳答案

好的,谢谢...这似乎让事情变得不那么困惑了:

<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>

尝试了解从 oracle 到 tomcat 再到 jsf 之间的流程中发生了什么。

我在 Oracle 中有一个日期(非时间戳值),保存在 2013 年 9 月 20 日的托管 bean 日期实例中...我的 tomcat 服务器是 UTC+2。 JSF 在我的 ouputLabel 中将日期显示为 2013 年 9 月 19 日的前一天。

tomcat日志

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]]

jsf

    <h:outputLabel value="#{customerTasksBean.travelTask.travelDate}" rendered="#{customerTasksBean.renderTravel}">
<f:convertDateTime pattern="dd-MMM, yyyy" />
</h:outputLabel>

JSF 是否知道我的服务器是 UTC+2,因此为了更正为 UTC,它会从 2013 年 9 月 20 日的日期减去 2 小时,并在 JSF 转换期间将其推送到前一天?在我看来,日期没有 UTC 部分,那么为什么它会尝试将 UTC+0 日期转换为其他日期呢?

问候

关于java - JSF/Oracle 中的日期和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com