2

Israel has recently changed its laws regarding DST such that when using the Calendar.getTimeZone().inDaylightTime(date) method, the response for the date range September 6th - October 27th is incorrect when deploying code to app engine. Interestingly when running on local dev server the range of dates that cause incorrect responses is different.

  1. Is there a short term workaround for this?
  2. What is the process for asking google to fix this?
4

1 回答 1

2

您描述的更改包含在IANA TZDB 2013d版本中。你可以在 GitHub 上的提交历史中看到

由于您显示的代码看起来像 Java,我假设您使用的是 Google App Engine 上的 Java 运行时环境

Java 会定期更新其 TZDB 数据并通过 JRE 更新将其推出。他们确实提供了带外 TZUpdater 实用程序。您可以在此处阅读有关此内容的更多信息。

根据此变更日志,TZDB 2013d 更新包含在 TZUpdater 1.3.57 中,但尚未合并到 JRE 更新版本中。您可以在此处为您的本地环境下载它。

Google 必须将此 TZUpdater 应用到他们的生产环境中。我已经搜索过了,但我找不到任何关于他们是否已经定期这样做的信息。你可以在这里提出问题来询问。

关于解决方法 - 您可以使用Joda Time库,它有自己的 TZDB 副本,因此不依赖于 JRE 或 TZUpdater 更新。Joda Time 2.3 版已经包含 2013d 数据,但如果您愿意,可以按照这些说明自行更新。当然,使用 Joda Time 意味着对您可能拥有的任何现有代码进行重大更改,但这可能非常值得。

于 2013-08-20T16:30:27.640 回答