向 Calendar 对象添加DAY_OF_MONTH或DAY_OF_YEAR有什么区别?

2022-08-31 16:06:31

我想将某个日期增加 1 天。我创建了一个日历对象,如下所示:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 31);

然后,为了增加1天,我可以做2件事:

cal.add(Calendar.DAY_OF_MONTH, 1);

cal.add(Calendar.DAY_OF_YEAR, 1);

还有其他“DAY”常量,但我使用上述2种将日数增加1的方法得到相同的结果。在哪种情况下,我会得到两者的不同结果?


答案 1

对于添加它真的没有区别,但是这个

Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_YEAR));

指纹

28
363

答案 2

Calendar.add 根据日历的规则,向给定的日历字段添加或减去指定的时间量。

在这里,您有一个可以添加或减去的日历字段列表:

  • 毫秒数是介于 0 和 999 之间的毫秒数

  • SECOND 是介于 0 和 59 之间的秒数

  • 分钟是介于 0 和 59 之间的分钟数

  • 小时是介于 0 和 11 之间的小时数

  • HOUR_OF_DAY是介于 0 和 23 之间的小时数

  • DAY_OF_WEEK是 1 到 7 之间的一周中的日期

  • DAY_OF_MONTH是 1 到 31 之间与月份相关的日期

  • DAY_OF_YEAR是1到366之间与一年中相关的日期

  • WEEK_OF_MONTH是与从 1 开始的月份相关的一周

  • WEEK_OF_YEAR是从 1 开始的一年中与一周相关的星期

  • MONTH 是介于 0 和 11 之间的一年中相对于的月份

  • 年份是从 1 开始的年数

小时、天和周有多个字段,但选择哪一个字段并不重要。例如,使用 -8 for 将起作用。DAY_OF_WEEK

calendar.add(Calendar.DAY_OF_MONTH, -2); // subtract 2 days
calendar.add(Calendar.DAY_OF_WEEK, -2);  // subtract 2 days
calendar.add(Calendar.DAY_OF_YEAR, -2);  // subtract 2 days

calendar.add(Calendar.YEAR, -2);         // subtract 2 years

1 仅使用 Calendar.add 并不重要,对于其他操作,结果可能会有所不同。