1
如何比較Groovy中忽略日期的日期?事情是這樣的:* MM-yyyy_1> MM-yyyy_2 *比較Groovy日期忽略日期
如何比較Groovy中忽略日期的日期?事情是這樣的:* MM-yyyy_1> MM-yyyy_2 *比較Groovy日期忽略日期
你可以這樣做:
int compareIgnoringDays(Date a, Date b) {
new Date(a.time).with { newa ->
new Date(b.time).with { newb ->
newa.set(date:1)
newb.set(date:1)
newa.compareTo(newb)
}
}
}
你可以測試,如:
Date a = Date.parse('yyyy/MM/dd', '2012/05/23')
Date b = Date.parse('yyyy/MM/dd', '2012/05/24')
Date c = Date.parse('yyyy/MM/dd', '2012/06/01')
assert compareIgnoringDays(a, b) == 0
assert compareIgnoringDays(b, a) == 0
assert compareIgnoringDays(a, c) == -1
assert compareIgnoringDays(c, a) == 1
寫入以不同的方式相同的功能是:
int compareIgnoringDays(Date a, Date b) {
[ a, b ].collect { new Date(it.time) } // Clone original dates
.collect { it.set(date:1) ; it } // Set clones to 1st of the month
.with { newa, newb ->
newa.compareTo(newb) // Compare them (this gets returned)
}
}
您可以比較兩個日期是這樣的:
def myFormat = 'MM/dd/yyyy'
if(Date.parse(myFormat, '02/03/2012') >= Date.parse(myFormat, '03/02/2012))
{...}
謝謝!由於我沒有用Groovy思考過很多東西,所以我將不得不探討這一點,但我猜測這是正確的方法。 – drago
它基本上將這兩個日期的副本設置爲本月的第一個日期,然後比較這些日期...謹慎設置時間,因爲顯然這會影響事物... Groovy有一個['Date.clearTime ()'方法](http://groovy.codehaus.org/groovy-jdk/java/util/Date.html#clearTime%28%29),你可能需要使用,如果時間將會在你的日期,但不是你的比較 –