我有以下代码
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);
我异常(exception)的是我的日期 c 设置为 2013 年 12 月 31 日,当我在不更改较大字段滚动方法的情况下向月份添加 1 时,应该向月份添加 1 以获得 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来理解,还有其他网站可以更好地解释这些字段吗?
最佳答案
Calendar#roll
只会滚动(增加/减少)您指定的字段的值,并且不会更新日历中的其他字段
。由于您滚动月份,因此只有月份会受到影响,而不是年份、日期或任何其他字段。
另外,请注意 Calendar#DATE
、Calendar#MONTH
和 Calendar#YEAR
是类的常量,它们不是字段。使用Calendar#get
相反:
System.out.println(c.getTime() + " " + c.get(Calendar.DATE) + " " + c.get(Calendar.MONTH) + " " + c.get(Calendar.YEAR));
关于java - 使用滚动方法设置日历字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209410/