Grails 比较两个Groovy日期

Grails 比较两个Groovy日期,grails,date,groovy,compare,Grails,Date,Groovy,Compare,我从用户那里得到两个日期 <g:datePicker name="now"/> <g:datePicker name="early"/> 即使日期相同,else部分也会被执行。 如何在groovy中比较日期?我不确定(params.early)。compareTo部分是否正确 无论如何,为什么不使用equals而不是compareTo==0?我的意思是: if (params.early == params.now) { //.... } else { /

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

<g:datePicker name="now"/>  <g:datePicker name="early"/>
即使日期相同,else部分也会被执行。 如何在groovy中比较日期?

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

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

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

如果您打印出
params.early
params.now
,您会得到什么?你确定它们不是字符串吗?如果它们是日期,它们是否有时间成分——这可能是它们不相等的原因

您应该能够做到:

if( params.early == params.now ) {
  early = Date.parse( "yyyy/MM/dd", "1970/01/01" )
}
else {
  // do something
}
或者,如果它们是带有时间成分的日期(您只对日期感兴趣):


我将使用日期类型协同来确保您获得日期:

params.date( 'early' ).compareTo( params.date( 'now' ) ) == 0

我曾经使用我曾经从userRight获取日期,所以它们应该是日期。当你把它们打印出来的时候,你确定它们是一样的吗?是的,它们是完全一样的,同时附加了时间end@user1211304如果它们与时间有关,你能试试我在回答的第二部分中展示的
clearTime
方法吗?事实上,你甚至在DatePickeren中设置了秒数,即使它不起作用。我一开始试过同样的代码。时间在两者中是相同的。你能显示
params.early
params.now
的实际值吗?如果部分没有执行,它会自动转到其他位置,即使日期相同。你能显示params.early和params.now的实际值吗?对它与时间有关,也与时间有关(params.ear==params.now){ear=newdate(0160,0,1)//make Date作为项目发布日志的开始日期。info(ear)now=params.now}或者{ear=params.ear now=params.now}这起作用了,问题是如何解释年份。根据日志结果,2016年是2011年。如何????
if( params.early.clearTime() == params.now.clearTime() ) {
  early = Date.parse( "yyyy/MM/dd", "1970/01/01" )
}
else {
  // do something
}
params.date( 'early' ).compareTo( params.date( 'now' ) ) == 0