0

我有一个单元测试试图验证以色列/伦敦之间的一些行为,我检查的第一件事是时区偏移量Asia/Jerusalem如下

val clientTimezone = DateTimeZone.forID("Asia/Jerusalem")
val now = new DateTime(DateTimeZone.forID("Etc/GMT"))
val clientOffset = clientTimezone.getOffset(now) / (1000 * 60)

现在是伦敦下午 5 点,以色列晚上 7 点,格林威治标准时间下午 4 点,但是当我运行此代码时,我被now初始化为 16:00,并且= 120 而不是 180。如果我clientOffset换成= 60。Asia/JerusalemEurope/LondonclientOffset

我是否正确使用了 Joda,还是时间不对?在本周末之前,这些测试都很好。这是 joda-time 2.1 版本

4

1 回答 1

2

以色列的时区规则已经改变。您需要使用 2013d 版本的 IANA 时区数据库。这包含在 JodaTime 2.3 中。

如果您无法更新 JodaTime,您可以按照这些说明单独更新 TZDB 数据。

于 2013-09-11T16:26:11.747 回答