开发者

Using Groovy comparison operators with Date objects

I'm investigating an issue and ran across some suspicious code involving com开发者_StackOverflow社区parison of Date instances using comparison operators. e.g.

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

This resource indicates the above is equivalent to the following

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

However, the GDK documentation on Dates only has examples comparing dates using compareTo, before, and after and I seem to recall specifically avoiding using the comparison operators on Dates due to an experience with unexpected results. Are the above two code examples indeed equivalent (that is, can I safely use comparison operators on Dates in Groovy, or should I only use compareTo, before, and after)?

Thanks!


Well if you plug them into the handy GroovyConsole they have the same result.

If I understand the question correctly:

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

Prints "before" twice

If I switched the stamp date to 2011 lets say it would not print.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜