11

私は問題を調査していて、比較演算子を使用したDateインスタンスの比較を含むいくつかの疑わしいコードに遭遇しました。例えば

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

このリソースは、上記が次と同等であることを示しています

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

ただし、Datesに関するGDKのドキュメントにcompareToは、、、beforeおよびを使用して日付を比較する例しかありませんafter。予期しない結果が発生したため、Datesで比較演算子を使用しないようにしたことを特に思い出しているようです。上記の2つのコード例は実際に同等ですか(つまり、GroovyのDatesで比較演算子を安全に使用できますか、または、、、およびのみを使用する必要がcompareToありbeforeますafter)?

ありがとう!

4

1 に答える 1

5

それらを便利な GroovyConsole にプラグインすると、同じ結果が得られます。

質問を正しく理解している場合:

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"
}

「前」を 2 回出力する

スタンプの日付を 2011 に切り替えた場合、印刷されないとします。

于 2011-02-07T21:27:35.070 に答える