以色列最近更改了其 laws关于 DST,例如使用 Calendar.getTimeZone().inDaylightTime(date)
方法时,将代码部署到应用引擎时,9 月 6 日至 10 月 27 日日期范围的响应不正确。有趣的是,当在本地开发服务器上运行时,导致错误响应的日期范围是不同的。
- 有短期解决方法吗?
- 要求 Google 解决此问题的流程是什么?
最佳答案
您描述的更改已在 IANA TZDB 中捕获发布 2013d.您可以在 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 .
Google 必须将此 TZUpdater 应用于其生产环境。我已经搜索过,但我找不到任何关于他们是否已经定期这样做的信息。您可以提出问题here询问。
关于解决方法 - 您可以使用 Joda Time库,它有自己的 TZDB 副本,因此不依赖于 JRE 或 TZUpdater 更新。 Joda Time 2.3 版已包含 2013 年的数据,但如果您愿意,可以按照 these instructions 自行更新。 。当然,使用 Joda Time 意味着对您可能拥有的任何现有代码进行重大更改,但这可能是非常值得的。
关于java - 日历时区 inDaylightTime 返回以色列的错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331994/