2012-03-16 339 views
1

我從用戶那裏獲取兩個日期。比較兩個Groovy日期

<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

如果(params.ear == params.now) \t \t \t { \t \t \t \t耳=新的日期(0160,0,1)//使日期爲項目發佈 \t \t \t \t log.info(耳) \t \t \t \t現在=參數的開始日。現在 \t \t \t} \t \t \t其他 \t \t \t { \t \t \t \t耳= params.ear \t \t \t \t現在= params.now \t \t \t} – nandini 2012-03-20 10:03:00

+0

這是工作只是問題是,一年是如何被interpretted。 0160是2011根據日誌結果.how ???? – nandini 2012-03-20 10:04:29

回答

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 
} 
+0

我已經使用我已經使用從用戶獲取日期 – nandini 2012-03-16 11:28:34

+0

對,所以他們應該是日期。當你把它們打印出來,你確定它們是一樣的嗎? – 2012-03-16 11:36:42

+0

是啊,他們是完全相同的時間附加在末尾 – nandini 2012-03-16 11:40:38

0

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

無論如何,爲什麼不使用equals而不是compareTo == 0?我的意思是:

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

即使這不起作用。我首先嚐試了相同的代碼。兩者的時間都是一樣的。 – nandini 2012-03-16 11:29:46

+0

你能顯示'params.early'和'params.now'的實際值嗎? – 2012-03-16 11:31:45

+0

如果部分未被執行,它會自動到達其他位置,即使日期相同 – nandini 2012-03-16 11:32:32

0

我會使用日期類型coersion,以確保您得到日期:

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

http://mrhaki.blogspot.com/2012/01/grails-goodness-date-request-parameter.html – 2012-03-16 14:27:56