gpt4 book ai didi

java - 为什么 1942/4/3 00 :00:00 an illegal date in java. util.Calendar?

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:48 25 4
gpt4 key购买 nike

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/Helsinki 时区测试了夏令时。目前,自 1981 年以来一直在使用夏令时,时钟在 03:00 而不是 00:00 向前上弦。这意味着例如 2010 年 3 月 28 日 03:00 在 java.util.Calendar 中不存在。

我只需要在我的代码中为这个特定日期创建一个特例。

最佳答案

只是猜测,但这与夏令时有关吗?我想这将取决于代码库的本地化(夏令时生效的确切日期)以及其他因素。

---编辑--- 也许不是,因为那是星期五。

关于java - 为什么 1942/4/3 00 :00:00 an illegal date in java. util.Calendar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3053486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com