java - Calendar的add方法中的DAY_OF_MONTH参数和DAY_OF_YEAR参数有什么区别?
怪我咯
怪我咯 2017-04-17 16:41:59
0
1
475

比如,

calendar.add(Calendar.DAY_OF_MONTH, amount);
calendar.add(Calendar.DAY_OF_YEAR, amount);

如上,有何区别?

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(1)
黄舟

簡単に言えば、違いはありません。

Calendar クラスの add メソッドは抽象メソッドです。このメソッドを実装する JDK には、

という 3 つのクラスがあります。
  • java.util.JapaneseImperialCalendar

  • java.util.GregorianCalendar

  • sun.util.BuddhistCalendar

3 番目のコードは無視し、最初の 2 つの実装クラスのみを見てください。

というコードがあります。 リーリー

一見したところ、ブレーク後の実行ブランチはこれら 3 つのタイプを区別しません。
量は、次の呼び出しなど、最初のパラメータのスコープによって制限されないようです:

calendar.add(Calendar.DAY_OF_MONTH, 100);

最終結果の day_of_year が依然として 100 日増加していることがわかります。

このメソッドの API で説明されている 2 つのルールは、この範囲外の状態を説明できます。

ルール 1 を追加します。呼び出し後のフィールドの値から呼び出し前のフィールドの値を引いた値が、
フィールドで発生したオーバーフローを除算した値になります。 オーバーフローは、フィールド値が範囲を超えたときに発生します。 、
結果として、次に大きいフィールドが増分または減分され、
フィールド値がその範囲内に調整されます。

ルール 2 を追加します。小さいフィールドは不変であると予想されるが、フィールドの変更後に最小値または最大値が変化したため、

以前の値と等しくなることが不可能である場合
、その値は、期待される値にできるだけ近くなるように調整されます。
フィールドは、
DAY_OF_MONTH よりも小さい時間単位を表します。
不変であると期待されていません。
どのフィールドが不変であると期待されるかはカレンダー システムによって決まります。

したがって、量が day_of_month の範囲を超えた場合でも、このメソッドは正しく処理されると思います。
ただし、可読性の観点からは、適切なパラメータを使用する方が良いでしょう。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!