今天,在欧洲,日期是2015年10月1日。您能否告诉我为什么运行此代码会将日期显示为2015年10月31日?
Calendar yesterday = Calendar.getInstance();
yesterday.roll(Calendar.DATE, false);
System.out.println(yesterday.getTime());
答案 0 :(得分:6)
Calendar.DATE
表示该月的某一天,而不是一年中的某一天。因此,当将一个月的日期向后滚动1个单位时,我们基本上是从该月的第1天到最后一天。
引用roll
Javadoc(强调我的):
在给定时间字段上添加或减去(上/下)单个时间单位而不更改更大的字段。
并引用Calendar
Javadoc:
较大的字段代表较大的时间单位。
因此,滚动月中的日期时,此方法不会更改MONTH或YEAR等字段。
您应该使用Calendar.DAY_OF_YEAR
代替:
run.py