2011-02-07 29 views
11

私は問題を調査し、比較演算子を使ったDateインスタンスの比較を含む疑わしいコードを実行しました。例えばGroovy比較演算子をDateオブジェクトと併用する

def stamp = ... //Date 
    def offset = ... //Integer 
    def d = new Date(stamp.time + offset) 
    if (d < new Date()) { 
     ... 
    } 

Thisリソースは、上記を示し、次の

しかし
def stamp = ... //Date 
    def offset = ... //Integer 
    def d = new Date(stamp.time + offset) 
    if (d.compareTo(new Date()) < 0) { 
     ... 
    } 

に相当し、GDK documentation on Datesのみ、compareTobefore、およびafterを使用して日付を比較した例があり、私は比較を使用して避け、具体的思い出すように見えます予期しない結果を経験したために日付の演算子。上記の2つのコード例はまったく同じです(つまり、GroovyのDatesで安全に比較演算子を使用できますか、compareTo,before、およびafterのみ使用する必要があります)。

ありがとうございます!

答えて

5

便利なGroovyConsoleにプラグインしても同じ結果が得られます。

私が正しく質問を理解している場合:私は2011年にスタンプ日付を切り替えた場合は二回

「前」

def stamp = Date.parse("MM/dd/yyyy","02/02/2010") 
def offset = 1213123123 
def d = new Date(stamp.time+offset) 
if(d < new Date()) { 
    println "before" 
} 
if(d.compareTo(new Date()) < 0) { 
    println "before" 
} 

プリントを、それが印刷されないだろうと言うことができます。

+0

私はGroovyConsoleでこれを試しましたが、Dateのさまざまなコンポーネントに関連するコーナーケースが不足している可能性があります。 –

+0

2つの日付の値を知る方法は同じですか?これはちょうどこのd.compareTo(new Date())== 0のようなものですか?感謝祭 – danielad