1. ホーム
  2. java

[解決済み】Joda-Time:Period、Interval、Durationの違いは何ですか?

2022-04-17 19:40:14

質問

ヨーダ時間 2、3種類のタイムスパンの違いは何ですか。

  • 期間
  • インターバル
  • 期間

    1. なぜ3つのクラスが必要なのか?

    2. どれがより良いパフォーマンスなのか?

    3. なぜ ディバイディング は実装されていないのですか?例 p = p.divideBy(2);

解決方法は?

3つのクラスが必要なのは、それぞれ異なる概念を表すからで、相対的な性能の問題ではなく、仕事に適したものを選ぶことが重要です。からは ドキュメント で私がコメントをつけています。 斜体 :


An 間隔 Joda-Timeでは、あるミリ秒の瞬間から別の瞬間までの時間間隔を表します。どちらの瞬間も、時空連続体において完全に指定された瞬間であり、タイムゾーンも完全に指定されています。 例えば、昨日の20:00:00GMTと今朝の09:00:00GMTの間の時間である。

A 継続時間 Joda-Timeでは、ミリ秒単位で測定された時間の持続時間を表します。継続時間はしばしばインターバルから取得されます。 つまり、インターバルの開始から終了までを引くことで、デュレーションを導き出すことができます。

A 期間 Joda-Timeでは、3年5ヶ月2日7時間のように、フィールドで定義された期間を表します。これは、ミリ秒単位で不正確であるという点で、期間と異なります。期間は、相対的な瞬間(年代とタイムゾーンを含む)を指定することによってのみ、ミリ秒の正確な数に解決することができます。 例えば、1年という期間を考えてみましょう。1月1日にこれを足せば、必ず次の1月1日に到達しますが、その間の年がうるう年かどうかで期間が変わってきます。同様に、ある月の1日に1ヶ月を追加すると、次の月の1日に到着しますが、持続時間(ミリ秒)はその月によって異なります。


質問3については、デュレーションを分割する特別な方法は必要ありません。 long (使用 getMillis() を使用)、分割して新しいデュレーションを構築する( new Duration(long duration) ).

期間を区切るということは、上記の期間の定義からすると、実際には意味がありません。例えば、半月とは何でしょうか?(その長さはどの月かによる)。