1942年4月3日有什么特别之处吗?出于某种原因,第0天(上午12:00)的小时在此特定日期是非法的。使用宽松日历但一天中的小时增加到1(凌晨1:00)时接受日期。
相关代码
java.util.Calendar calendar = java.util.Calendar.getInstance(
java.util.TimeZone.getTimeZone("Europe/Helsinki")
);
calendar.clear();
calendar.setLenient(false);
calendar.set(1942, 3, 3, 0, 0, 0);
calendar.getTimeInMillis();
例外
java.lang.IllegalArgumentException: HOUR_OF_DAY
at java.util.GregorianCalendar.computeTime(Unknown Source)
at java.util.Calendar.updateTime(Unknown Source)
at java.util.Calendar.getTimeInMillis(Unknown Source)
我真的更喜欢日期并不宽松,因为我不想接受不可能的约会。
- 编辑
正如公认的答案和许多评论指出的那样,这确实与夏令时有关。 1942年4月3日00:00,在EEST /赫尔辛基时区测试了夏令时。目前,自1981年以来一直在使用夏令时,时钟在03:00而不是00:00前进。这意味着java.util.Calendar中不存在e 2010年3月28日03:00。
我只需要在我的代码中为这个特定日期创建一个特例。
答案 0 :(得分:6)
只是一个猜测,但它与夏令时有关吗?我想这取决于您的代码库的本地化(夏令时的确切日期生效)以及其他因素。
---编辑---也许不是,因为那是星期五。
答案 1 :(得分:3)
时区和夏令时逐年变化,1942年在世界大部分地区都是一个特别奇怪的地方 - 各个部分都在迅速转手。亚洲的一些地方被标准化为“缅甸时代”,因此从当地时代转变。
你的个人资料说你在芬兰,这并不复杂。这个world-time database将日期和时间置于正常夏令时丢失的一小时内。