所以让我说我有这个代码:
//someParameterizedDate = New Years Eve 2011
Calendar cal = new GregorianCalendar();
cal.setTime(someParameterizedDate);
cal.roll(Calendar.DAY_OF_YEAR, 1);
日历现在是否等于2012年1月1日?我发现所有的JavaDoc都有点令人困惑。
答案 0 :(得分:4)
roll(f,delta)将delta添加到字段f而不更改更大的字段。 这相当于使用以下方法调用add(f,delta) 调整:
滚动规则。通话结束后,较大的字段不变。一个更大的领域 代表更大的时间单位。 DAY_OF_MONTH是一个比字段大的字段 HOUR。
您使用DAY_OF_YEAR
滚动,这意味着它不会影响较大单位的MONTH
或YEAR
所以基本上,你应该把你带到2011年12月1日
如果您希望将其发送至2012年1月1日,则可以使用add