将Groovy比较运算符与Date对象一起使用

时间:2011-02-07 21:08:07

标签: datetime date groovy operators gdk

我正在调查一个问题并遇到一些涉及使用比较运算符比较Date实例的可疑代码。 e.g。

    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仅包含使用compareTobeforeafter比较日期的示例,我似乎特别记得避免在日期使用比较运算符一种意想不到的结果。以上两个代码示例是否确实等效(也就是说,我可以在Groovy中的日期安全地使用比较运算符,还是应该只使用compareTobeforeafter)?

谢谢!

1 个答案:

答案 0 :(得分: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年,可以说它不会打印。