首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimeZone casablanca错误偏移量(java)

TimeZone casablanca错误偏移量(java)
EN

Stack Overflow用户
提问于 2015-01-13 14:59:59
回答 2查看 3K关注 0票数 5

我正试图在卡萨布兰卡时区建立一个日期(2014年7月29日凌晨02:55:08 ),并得到了以下例外:

线程"main“java.util.GregorianCalendar.computeTime(Unknown java.lang.IllegalArgumentException中的异常: HOUR_OF_DAY: 2 -> 3 at HOUR_OF_DAY Source)

代码语言:javascript
复制
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("Africa/Casablanca"));
cal.setLenient(false);
cal.set(Calendar.DATE, 29);
cal.set(Calendar.MONTH, 6); // July
cal.set(Calendar.YEAR, 2014);
cal.set(Calendar.HOUR_OF_DAY, 2);
cal.set(Calendar.MINUTE, 55);
cal.set(Calendar.SECOND, 8);
cal.getTime();

异常是用jre 1.7.0_71和1.8.0_20引发的,而不是用1.6.0_30引发的。

据我所知,在那个特定的时间没有夏令变化发生。知道吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 19:38:28

JRE并不总是使用最新的时区数据进行更新。要保持当前状态,必须使用TZUpdater实用程序。Oracle和时区更新列表同时发布TZUpdater。它表明,上一次JRE更新(在我撰写本文时)是在第65版的Java 7中,第11版是在Java 8的版本中进行的,它是使用tzdata的2014 C版编写的。

如果我们看看tzdata的来源,见2014 C版,我们可以看到,当时对摩洛哥的猜测确实是猜测斋月禁赛从6月29日至7月29日。

代码语言:javascript
复制
Rule    Morocco 2014    only    -   Jun  29      3:00   0       -
Rule    Morocco 2014    only    -   Jul  29      2:00   1:00    S

当然,这是后来更新到克里斯的答案中所显示的数值,当时埃及终于宣布了真正的日期。

您可以从最初的猜测这里中看到一些面包屑,在tz列表中有很多关于埃及、从五月开始和一直持续到7月的讨论。

票数 5
EN

Stack Overflow用户

发布于 2015-01-13 15:08:11

它实际上与日光节约的变化相对应。在摩洛哥,斋月期间暂停了日光节约。有关详细信息,请参阅http://www.timeanddate.com/news/time/egypt-morocco-dst-ramadan-2014.html

2014年的时区数据输入如下:

代码语言:javascript
复制
Rule    Morocco 2014    only    -       Jun     28       3:00   0       -
Rule    Morocco 2014    only    -       Aug      2       2:00   1:00    S
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27925035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档