向指定日历字段添加有符号的时间量,不更改更大的字段。负的波动量表示从字段减去时间量,不更改更大的字段。如果指定的量为 0,则此方法不执行任何操作。
此方法在添加时间量前调用 calendar.complete(),使得所有的日历字段都标准化。如果任何日历字段在 non-lenient
iis7站长之家下具有超出范围的值,则抛出 illegalargumentexception。
示例:考虑原来设置为 1999 年 8 月 31 日的 gregoriancalendar 。现在调用 roll(calendar.month, 8) 将该日历设置为 1999 年 4 月 30 日。如果使用 gregoriancalendar,则 4 月份的 day_of_month 字段不可能为 31。将 day_of_month 设置为最可能接近的值 30。year 字段保持为值 1999,因为它是一个比 month 更大的字段。
示例:考虑原来设置为 1999 年 6 月 6 日星期日的 gregoriancalendar 。现在调用 roll(calendar.week_of_month, -1) 将该日历设置为 1999 年 6 月 1 日星期二,而调用 add(calendar.week_of_month, -1) 则将日历设置为 1999 年 5 月 30 日星期日。这是因为上升和下降规则施加了其他的约束:week_of_month 改变时 month 必须不变。根据添加规则 1,所得日期必定在 6 月 1 日星期二和 6 月 5 日星期六之间。根据添加规则 2,day_of_week(在改变 week_of_month 时它是一个不变量)被设置为 tuesday,是最接近 sunday 的可能值(其中星期日是一个星期的第一天)。
- 覆盖:
- 类
calendar 中的 roll
- 参数:
field - 日历字段。amount - 添加到 field 的有符号时间量。
- 抛出:
illegalargumentexception - 如果 field 为 zone_offset、dst_offset 或未知,或者任何日历字段在 non-lenient 模式下具有超出范围的值。- 从以下版本开始:
- 1.2
- 另请参见:
roll(int,boolean),
add(int,int),
calendar.set(int,int)