java - 日历时区 inDaylightTime 返回以色列的错误答案

标签 java google-app-engine timezone dst

以色列最近更改了其 laws关于 DST,例如使用 Calendar.getTimeZone().inDaylightTime(date) 方法时,将代码部署到应用引擎时,9 月 6 日至 10 月 27 日日期范围的响应不正确。有趣的是,当在本地开发服务器上运行时,导致错误响应的日期范围是不同的。

  1. 有短期解决方法吗?
  2. 要求 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/

相关文章:

java - 请求之间的 session 不持久

php - php geonames 时区中的 echo 状态消息

java - 同步如何在 Java 中工作?

java - GAE/数据存储 : How to model my data for frequently updated statistics?

java - 如何在struts 1.1应用程序中使用外部js文件并在onclick事件上调用javascript函数?

node.js - AppEngine NodeJS 灵活内存缓存未定义 GAE_MEMCACHE_HOST 和 GAE_MEMCACHE_PORT

java - 在java中将本地时区转换为GMT

sql - 在 postgres 中选择时间戳记录

java - 如何使用 PowerMock(ito) 获取对传递给 Thread 构造函数的 Runnable 实例的引用?

java - 如何获取同一服务的多个实例的所有持久实体