2013-08-20 53 views
2

以色列最近改变了其关于laws DST,令使用Calendar.getTimeZone().inDaylightTime(date)方法时,日期范围9月6日的反应 - 10月27日到App Engine部署代码时不正确。有趣的是,在本地开发服务器上运行时,导致不正确响应的日期范围不同。日历时区inDaylightTime返回不正确的答案以色列

  1. 是否有短期的解决方法呢?
  2. 要求谷歌解决这个问题的过程是什么?

回答

2

您所描述的更改记录在2013d的IANA TZDB版本中。你可以在GitHub here的提交历史中看到它。

由于您显示的代码看起来像Java,因此我假设您使用的是the Java Runtime Environment on Google App Engine

Java定期更新其TZDB数据并通过JRE更新将其推出。他们提供带外TZUpdater实用程序。你可以阅读更多关于这个here

根据this changelog,TZDB 2013d更新包含在TZUpdater 1.3.57中,但尚未合并到JRE更新版本中。你可以下载这个当地环境here。谷歌将不得不将TZUpdater应用到他们的生产环境。我已经搜索过,但是我找不到任何有关他们是否已经定期或不定期的信息。你可以提出问题here问。

关于解决方法 - 您可以使用Joda Time库,它有自己的TZDB副本,因此不依赖于JRE或TZUpdater更新。 Joda Time release 2.3已经包含2013d数据,但是如果你想要,你可以自己更新它,下面是these instructions。当然,使用Joda时间意味着对您现有的任何代码进行重大更改,但这可能是值得的。

+0

感谢您的深入和完整的答案。我向谷歌(9869)开放并发布问题,根据他们的响应时间,我将决定是否承担转移到乔达的开销。 –

相关问题