将DAY_OF_MONTH或DAY_OF_YEAR添加到Calendar对象之间有什么区别?

Dau*_*aud 50 java datetime

我想将某个日期增加1天.我创建一个Calendar对象,如:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 31);
Run Code Online (Sandbox Code Playgroud)

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

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

要么

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

还有其他"DAY"常量,但是我使用上述两种增加1的方法得到相同的结果.在这种情况下,我会得到两个不同的结果吗?

Evg*_*eev 49

添加它真的没什么区别,但是这个

Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_YEAR));
Run Code Online (Sandbox Code Playgroud)

版画

28
363
Run Code Online (Sandbox Code Playgroud)


Pao*_*gia 17

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

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

小时,天和周有多个字段,但您选择哪一个并不重要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
Run Code Online (Sandbox Code Playgroud)

1 使用,与其他操作无关,结果可能不同.Calendar.add


Tim*_*fei 9

使用Calendar.DATE你的目的.在您的情况下,这三个常量是同义词.


Rah*_*hul 8

调用add时没有任何区别.然而,吸气剂返回不同的结果:D

来自的代码片段 GregorianCalendar#add

case DAY_OF_MONTH: // synonym of DATE
 case DAY_OF_YEAR:
 case DAY_OF_WEEK:
    break;
Run Code Online (Sandbox Code Playgroud)


kos*_*osa 6

DAY_OF_YEAR
Run Code Online (Sandbox Code Playgroud)

获取和设置的字段编号,指示当前年份中的日期编号

DAY_OF_MONTH
Run Code Online (Sandbox Code Playgroud)

get和set的字段编号,表示该月的某一天.这是DATE的同义词

如果日期大于31,您将看到差异.