比较两个Groovy日期

时间:2012-03-16 11:19:10

标签: grails date groovy compare

我从用户那里得到两个日期。

<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中的日期?

3 个答案:

答案 0 :(得分:0)

我不确定(params.early).compareTo部分是否正确。

无论如何,为什么不使用equals代替compareTo == 0?我的意思是:

if (params.early == params.now) {
   //....
} else {
   //....
}

答案 1 :(得分:0)

如果您打印params.earlyparams.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