使用roll方法设置日历字段

时间:2014-08-08 17:53:52

标签: java date calendar

我有以下代码

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,还有其他网站可以更好地解释这些字段吗?

2 个答案:

答案 0 :(得分:1)

Calendar#roll只会滚动(增加/减少)您指定的字段的值,并且不会更新其他字段<{1}}中的。由于您每个月都在滚动,因此只会影响一个月,而不是一年一天,也不会影响任何其他领域。

另请注意,CalendarCalendar#DATECalendar#MONTH是该类的常量,它们不是字段。请改用Calendar#get

Calendar#YEAR

答案 1 :(得分:0)

因为DATEMONTHYEARCalendar内部使用的int常量

你需要

c.get(Calendar.DATE)

检索DATE字段

注意: 也是月份从0 Calendar开始,因此12将是January而不是December