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

Pen*_*m10 52 java calendar

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

roll()在给定时间字段上添加指定(签名)的单个时间单位,而不更改更大的字段.

我想不出日常使用roll()我会做的一切add().

你能在什么时候使用roll()以及什么时候使用例子来帮助我add()

编辑1

Joda答案不被接受!

Boz*_*zho 52

  • add() - 正如你所说,几乎总是如此
  • roll() - 例如,您想在一个月内"分发"事件.算法可以进行若干天并放置事件,然后继续进行.当达到月末时,它应该从头开始.因此roll().


Men*_*nda 31

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日的日期,添加(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.


小智 6

我只是问了同样的问题(这就是我发现这个页面的方式)和我工作的人(做得好,DCK)提出了一个建议:

许多智能手机(和其他类似界面)上的日期选择器将从第31天到第1天"滚动"而不改变月份,类似于月份字段.

我想不出另一个使用ATM,这个可以通过其他方式实现,但至少它是一个例子!

蒂姆