3"),我看不出原因。您可以将任何小时、天、月、年更改为任何其他值,测试就会成功-6ren">
gpt4 book ai didi

java - Calendar.getTime() 中奇怪的 IllegalArgumentException

转载 作者:行者123 更新时间:2023-12-02 19:59:56 25 4
gpt4 key购买 nike

这个非常简单的测试失败了,并出现 IllegalArgumentException("HOUR_OF_DAY 2 -> 3"),我看不出原因。您可以将任何小时、天、月、年更改为任何其他值,测试就会成功。我测试过的任何 JRE 均失败。似乎是 GregorgianCalendar 实现中的内部问题?或者我错过了一些明显的东西?

import java.util.Calendar;

public class DateTest extends TestCase
{
/** test if 2011/03/27 02:30:00 converts to a valid date.
* shouldn't throw any exception, however this throws
* IllegalArgumentException("HOUR_OF_DAY 2 -> 3)
*/
@Test
public void testDate()
{
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.clear();
cal.set(Calendar.SECOND, 00);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.HOUR_OF_DAY, 02);
cal.set(Calendar.DAY_OF_MONTH, 27);
cal.set(Calendar.MONTH, 03 - 1); // needs to be 0-based
cal.set(Calendar.YEAR, 2011);
cal.getTime();
}
}

最佳答案

您的时区中不存在此日期和时间组合,因为它会因夏令时而变得不连续。

由于您配置了 setLenient(false),当您尝试输入不存在的日期时,Calendar 会正确引发异常。

经验法则:如果您在日期和时间计算中发现奇怪的情况,请怀疑夏令时。

关于java - Calendar.getTime() 中奇怪的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351680/

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