gpt4 book ai didi

java - Android 日历似乎行为不端

转载 作者:行者123 更新时间:2023-11-30 04:13:55 27 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,我发现日历有一些奇怪的行为,所以我编写了以下测试:

public void testCalendar1(){
int[] months = {
Calendar.JANUARY,
Calendar.FEBRUARY,
Calendar.MARCH,
Calendar.APRIL,
Calendar.MAY,
Calendar.JUNE,
Calendar.JULY,
Calendar.AUGUST,
Calendar.SEPTEMBER,
Calendar.OCTOBER,
Calendar.NOVEMBER,
Calendar.DECEMBER,
};
for(int i = 0; i < months.length; i++){
assertEquals(months[i], i);
}
}

public void testCalendar2(){
Calendar cal = Calendar.getInstance();
for(int i = 0; i < 12; i++){
cal.set(Calendar.MONTH, i);
assertEquals(cal.get(Calendar.MONTH), i);
}
}

我希望两个测试都能通过,但第二个测试失败并出现错误:

junit.framework.AssertionFailedError: expected:<2> but was:<1>
at ...

因此,似乎当日历月份设置为 1(二月)时,get 方法返回 2(三月)。有没有人以前见过这样的行为或知道可能是什么原因造成的?还是我刚刚做了什么蠢事?

注意:这些测试作为 Android junit 测试在 Android 手机上运行。

编辑:我刚刚意识到它只发生在 2 月,而今天是 4 月 30 日。看来我已经回答了我自己的问题。

最佳答案

您必须将 DAY_OF_MONTH 设置为 1 号。如果未初始化,则使用当前日期,即今天的 30.04.2012。当您将月份设置为 2 月时,它将是 2012 年 2 月 30 日,因为这个日期不存在,日历实现切换到 3 月。

关于java - Android 日历似乎行为不端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380286/

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