ここで質問されているものと非常によく似た何か - compare Joda-Time time zonesを扱っていますが、それは私にとってはうまくいかないようです。 、私は上記の両方のSYSOUT文から「false」に取得興味深いことに2つのJoda-Time DateTimeオブジェクトの比較
DateTime estDT = new DateTime(DateTimeZone.forID("America/Puerto_Rico")).withMillisOfSecond(0);
DateTime londonDT = new DateTime(DateTimeZone.forID("Europe/London")).withMillisOfSecond(0);
System.out.println("Comparison " + londonDT.isBefore(estDT));
System.out.println("Comparison " + londonDT.isAfter(estDT));
-
は、ここで私はとJoda-TimeDateTimeをテストしていたコードの一部です。誰もこの比較を行う正しい方法が何であるか説明してください。
に等しい技術的、londonDT宇宙のタイムライン上の点として* estDT後*モーメントを表します。コードの2つの別々の行は、コンピュータのクロックの2つの別々のサンプリングを意味するので、2番目の行は1番目より遅く発生しました。 DateTimeの分解能はミリ秒であるため、両方のコード行がコンピュータの時計と同じミリ秒以内に実行された場合、それらの行はお互いに等しくなります。これは純粋な運(チャンス)です。 Javaスレッドが実行中に遅延/中断したか、遅いコンピュータ上で実行されたかによって、その2つのDateTimesが異なる可能性があります。 –
私たちは少し強すぎました。 withMillisOfSecond(0)を呼び出すと、2つの*はおそらく同じ瞬間を表します。ただし、別の秒で実行された場合(たとえば、ミリ秒= 999、ミリ秒= 0など)は異なる場合があります。同じ瞬間が実際に必要な場合は、瞬間を2回取得するよりも、withZone()メソッドが信頼性が高くなります。しかし、OPは入力として提供される時間内に2つの異なるインスタンスが必要になる可能性が高くなります。 –