我从用户那里得到两个日期。
<g:datePicker name="now"/> <g:datePicker name="early"/>
然后,在我的控制器中:
if((params.early).compareTo(params.now)==0) {
early=new Date(1970,1,1)
}
else {
//do something
}
即使日期相同,其他部分也会被执行。 我们如何比较groovy中的日期?
答案 0 :(得分:0)
我不确定(params.early).compareTo
部分是否正确。
无论如何,为什么不使用equals
代替compareTo == 0
?我的意思是:
if (params.early == params.now) {
//....
} else {
//....
}
答案 1 :(得分:0)
如果您打印params.early
和params.now
,会得到什么?你确定他们不是字符串吗?如果它们是日期,那么它们就有时间成分 - 这可能是它们不相等的原因。
你应该能够做到:
if( params.early == params.now ) {
early = Date.parse( "yyyy/MM/dd", "1970/01/01" )
}
else {
// do something
}
或者,如果它们是带有时间组件的日期,(并且您只对日期感兴趣):
if( params.early.clearTime() == params.now.clearTime() ) {
early = Date.parse( "yyyy/MM/dd", "1970/01/01" )
}
else {
// do something
}
答案 2 :(得分:0)
我会使用数据类型强制来确保你得到日期:
params.date( 'early' ).compareTo( params.date( 'now' ) ) == 0