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

Ste*_*sen 11 groovy datetime date operators gdk

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

    def stamp = ... //Date
    def offset = ... //Integer
    def d = new Date(stamp.time + offset)
    if (d < new Date()) {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

资源表明以上内容等同于以下内容

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

但是,关于日期GDK文档仅包含使用compareTo,beforeafter和比较日期的示例.我似乎特别回想起由于遇到意外结果而特别避免在日期使用比较运算符.在上面的两个代码示例确实当量(也就是,我可以放心地在Groovy中使用的日期比较操作,或者我应该只使用compareTo,beforeafter)?

谢谢!

sta*_*229 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"
}
Run Code Online (Sandbox Code Playgroud)

两次打印"之前"

如果我将印章日期改为2011年,可以说它不会打印.