我有以下代码
Calendar c = Calendar.getInstance();
c.set(2013, 12, 31);
System.out.println(c.getTime() + " " +c.DATE + " " + c.MONTH + " " + c.YEAR);
c.roll(Calendar.MONTH, 1);
System.out.println(c.getTime() + " " +c.DATE + " " + c.MONTH + " " + c.YEAR);
我的例外情况是我的日期c设定为2013年12月31日,当我一个月而不更改较大的现场滚动方法时,应该添加一个月到1月... 但我输出如下:
Tue Dec 31 13:49:51 EST 2013 5 2 1
Thu Jan 31 13:49:51 EST 2013 5 2 1
为什么c.Date,c.Month和year返回这些值..任何想法??
我指的是用于理解的javadocs,还有其他网站可以更好地解释这些字段吗?
答案 0 :(得分:1)
Calendar#roll
只会滚动(增加/减少)您指定的字段的值,并且不会更新其他字段<{1}}中的。由于您每个月都在滚动,因此只会影响一个月,而不是一年一天,也不会影响任何其他领域。
另请注意,Calendar
,Calendar#DATE
和Calendar#MONTH
是该类的常量,它们不是字段。请改用Calendar#get
:
Calendar#YEAR
答案 1 :(得分:0)