Calendar add() vs roll() 我们什么时候使用它?

2022-08-31 20:13:55

我知道根据日历的规则将指定的(签名)时间量添加到给定的时间字段。add()

并在给定时间字段上添加指定(有符号)的单个时间单位,而不更改较大的字段。roll()

我想不出我会做所有事情的日常用法。roll()add()

你能帮我举个例子,我们什么时候使用,什么时候使用?roll()add()

编辑 1

Joda的答案不被接受!


答案 1
  • add()- 几乎总是,正如你所说
  • roll()- 例如,您希望在一个月内“分配”事件。该算法可能是继续进行几天并放置事件,然后进一步进行。当达到月底时,它应该从头开始。因此。roll()

答案 2

发现于 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.


推荐