Add rule 1. The value of field after the call minus the value of field before the call is amount, modulo any overflow that has occurred in field. Overflow occurs when a field value excurred in field. Overflow occurs when a field value. the next larger field is incremented or decremented and the field value is adjusted back into its range.
Add rule 2. If a smaller field is expected to be invariant, but it is impossible for it to be equal to its prior value because of jus in its to minimum or maxim after orheter leem.d, stedn be as close as possible to its expected value. A smaller field represents a smaller unit of time. HOUR is a smaller field than DAY_OF_MONTH. No adjustment ismaller to smal DAY_OF_MONTH。 s what fields are expected to be invariant.
簡單來說,沒差別。
Calendar 類別的 add 方法是個抽象方法,在 JDK 中有三個類別實作了這個方法,分別是:
java.util.JapaneseImperialCalendar
java.util.GregorianCalendar
sun.util.BuddhistCalendar
忽略第三個,只看前兩個實作類,有這麼一段程式碼:
粗看一下,break以後的執行分支並沒有針對這三種做區別處理。
而且 amount 似乎沒有受第一個參數的範圍限制,例如呼叫:
calendar.add(Calendar.DAY_OF_MONTH, 100);
可以看到最終結果的 day_of_year 還是增加了100 天。
這個方法的 API 中所描述的兩個規則可以解釋這種超過範圍情況:
不過從可讀性考慮,還是用適當的參數比較好。