Calendar add() vs roll() 我们什么时候使用它?
我知道根据日历的规则将指定的(签名)时间量添加到给定的时间字段。add()
并在给定时间字段上添加指定(有符号)的单个时间单位,而不更改较大的字段。roll()
我想不出我会做所有事情的日常用法。roll()
add()
你能帮我举个例子,我们什么时候使用,什么时候使用?roll()
add()
编辑 1
Joda的答案不被接受!
我知道根据日历的规则将指定的(签名)时间量添加到给定的时间字段。add()
并在给定时间字段上添加指定(有符号)的单个时间单位,而不更改较大的字段。roll()
我想不出我会做所有事情的日常用法。roll()
add()
你能帮我举个例子,我们什么时候使用,什么时候使用?roll()
add()
编辑 1
Joda的答案不被接受!
add()
- 几乎总是,正如你所说roll()
- 例如,您希望在一个月内“分配”事件。该算法可能是继续进行几天并放置事件,然后进一步进行。当达到月底时,它应该从头开始。因此。roll()
发现于 jGuru
- Calendar.roll()
更改特定单位并保持“更大”(就时间月份而言“大于”天)单位不变。API 示例是,给定 1999 年 8 月 31 日的日期,滚动 (Calendar.MONTH, 8) 产生 1999 年 4 月 30 日。也就是说,DAY被更改以满足4月份的最大值,但“更大”的单位YEAR保持不变。
roll(): Rolls up 8 months here i.e., adding 8 months to Aug will result in Apr but year remains unchanged(untouched).
- 如有必要,Calendar.add()
将导致下一个“较大”单位发生更改。也就是说,给定 1999 年 8 月 31 日的日期,add(Calendar.MONTH, 8) 产生 2000 年 4 月 30 日。add() 还强制重新计算毫秒和所有字段。
add(): Adds months to the current date i.e., adding 8 months to Aug will give Apr of Next Year, hence forces the Year change.