我正在调查一个问题并遇到一些涉及使用比较运算符比较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仅包含使用compareTo
,before
和after
比较日期的示例,我似乎特别记得避免在日期使用比较运算符一种意想不到的结果。以上两个代码示例是否确实等效(也就是说,我可以在Groovy中的日期安全地使用比较运算符,还是应该只使用compareTo
,before
和after
)?
谢谢!
答案 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年,可以说它不会打印。