Joda-Time时区主线代码与测试

时间:2015-12-16 16:21:26

标签: jodatime

我在Joda-Time中使用此格式:

MM/dd/yyyy HH:mm:ss zzzz

在运行我的应用程序时,它打印12/16/2015 09:52:37中央标准时间,但在我的测试中它打印12/16/2015 09:52:37 -07:00。

我找到了zzzz文档的模式说:

  

长特定非位置格式(例如“太平洋标准时间”)。如果   本地化数据不可用,使用本地化的GMT格式   (例如GMT-08:00)。

本地化是否指向区域设置?我想让我的测试输出与主线代码输出的一致日期。

1 个答案:

答案 0 :(得分:2)

这很可能是操作系统级别的服务器环境的差异。 JodaTime和JDK使用"默认时区"对于时间戳,如果您没有明确指定一个。默认时区是OS提供的时区。检查生产和测试机器上的区域设置和时区设置(例如,这些是locale命令和checking /etc/timezone on some distributionsdate命令也可以显示时区值的差异)

或者,您可以使用DateTimeZone.getDefault()查询JodaTime使用的默认时区,该TimeZone.getDefault()是从JDK' {{3}}初始化的。这反过来在JVM启动属性user.timezone初始化(如果没有明确设置,它会在操作系统中查询时区)。如果要强制JVM在操作系统报告的时区以外的某个时区运行,可以在启动时提供该属性:

java -Duser.timezone=UTC