当lenient为false

时间:2017-04-04 18:23:34

标签: java calendar

在下面的代码中,我得到一个IllegalArgumentException,但我不明白为什么:

    Calendar date = Calendar.getInstance();
    date.clear();
    date.setLenient(false);
    date.set(2017, 2, 26, 2, 23);
    date.getTime();//here is the Exception thrown

异常堆栈:

Exception in thread "main" java.lang.IllegalArgumentException: HOUR_OF_DAY: 2 -> 3
at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2829)
at java.util.Calendar.updateTime(Calendar.java:3393)
at java.util.Calendar.getTimeInMillis(Calendar.java:1782)
at java.util.Calendar.getTime(Calendar.java:1755)
at WildDog.main(WildDog.java:13)

有什么想法吗?

第一次回复后的更多细节: 时区是CEST Java是1.8.0_102(问题也在IBM 1.6_x上)

1 个答案:

答案 0 :(得分:3)

对于给定的时区,时间根本不存在。在此期间,european countries的大多数都经历了DST转变。找出您的时区@JonSkeet建议并验证它。你的可能是CET - > CEST