我有一个 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 实例,“日期”给了我:
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 date shell 值不匹配,我们将不胜感激。
问候
一世