35

私はここで尋ねられたものと非常によく似たものを扱っています - Joda-Time タイムゾーンを比較しますが、うまくいかないようです。

これは、私が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)); 

興味深いことに、上記の両方の sysout ステートメントから「false」が返されます。この比較を行う正しい方法を誰か説明してもらえますか?

4

2 に答える 2

61

isAfterメソッドとisBeforeメソッドは、ミリ秒単位で日付を比較します (タイムゾーンは無視します)。

あなたの例では、日付のミリ秒は同じです。

System.out.println(londonDT.getMillis() == estDT.getMillis());  

印刷されますtrue

londonDT.isBefore(estDT) 
londonDT.isAfter(estDT)

に等しい

londonDT.getMillis() < estDT.getMillis()  
londonDT.getMillis() > estDT.getMillis()
于 2013-06-20T10:59:57.350 に答える
18

おそらく同じ瞬間を表す 2 つの DateTime インスタンスを作成していますが、タイム ゾーンが異なります。どちらも前後ではありません。

getHourOfDay()タイムゾーンは、日付/時刻メソッドが瞬時を変換する方法に影響を与えるだけです。

于 2013-06-18T15:25:51.327 に答える