在Android中的日历中添加一天会在31日失败

din*_*707 17 java android calendar

假设目前日期是5月28日.如果我按顺序调用以下命令,则输出变为

cal.add(Calendar.DATE, 1);  // Day = 29
cal.add(Calendar.DATE, 1);  // Day = 30
cal.add(Calendar.DATE, 1);  // Day = 31
cal.add(Calendar.DATE, 1);  // Day = 31
cal.add(Calendar.DATE, -1); // Day = 29
Run Code Online (Sandbox Code Playgroud)

为什么这不会跳到下个月?为什么它会停留在第31位(但是当你减去1时它会跳到29)?

Sat*_*jee 30

你可以通过两种简单的方式轻松地做到这一点.第一个是:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);
Run Code Online (Sandbox Code Playgroud)

第二个是:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.HOUR_OF_DAY, 24);
Run Code Online (Sandbox Code Playgroud)

我想你想找到这个东西.谢谢.


Inc*_*App 15

当你向Calendar.DATE字段添加1时,它应该在月末到达时增加月份(在5月的情况下为31),这样你写的没有意义.调试它并确保日期值确实是您认为的


vel*_*val 5

这也应该能达到目的。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);
Run Code Online (Sandbox Code Playgroud)

您可以测试它的工作原理:

for (int i = 0; i < 365; i++) {
    cal.add(Calendar.DAY_OF_YEAR, 1);
    System.out.println(cal.getTime().toString());
}
Run Code Online (Sandbox Code Playgroud)