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 文档仅包含使用compareTobefore和比较日期的示例,并且after由于遇到意外结果,我似乎特别记得避免在 Dates 上使用比较运算符。以上两个代码示例是否确实等效(也就是说,我可以安全地在 Groovy 中对日期使用比较运算符,还是应该只使用compareTo,beforeafter)?

谢谢!

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

打印“之前”两次

如果我将邮票日期切换到 2011 年,可以说它不会打印。

于 2011-02-07T21:27:35.070 回答