2011-11-22 64 views
0

我是JavaScript新手,我有一個非常基本的問題。GRAILS:在每個聲明中需要幫助

我有一個警報在這個每個語句在我的每個語句這是工作完美:

alert(" <g:each in="${index}"> ${""+it.indexDate+""+it.value } </g:each> "); 

現在我有這個變量:

var todaysDate = new Date ; 

我要檢查如果上述indexDate是與todaysDate相同。

我該怎麼做到這一點?

謝謝。

+1

什麼是

+0

grails框架 – junaidp

+1

你應該真的提到這一點。 –

回答

0

,你比較兩個Date對象的getTime()值。

if (it.indexDate.getTime() === todaysDate.getTime()) { 
    //Do something when todaysDate is it.indexDate 
} 

如果您只想比較日期部分,則比較getDate()的值。

if (it.indexDate.getDate() === todaysDate.getDate()) { 
    //Do something when todaysDate is it.indexDate 
} 

在Grails框架,你如果你想知道,如果這兩個日期是同一天(但不一定是相同的小時,分​​鍾和秒),使用下面的代碼

<g:each in=${index}> 
    <g:set var="todaysDate" value="${new Date()}" /> 
    <g:if test="${it.indexDate.getTime() === todaysDate.getTime()}"> 
     //code when the comparison passes 
    </if> 
</g:each> 
+0

謝謝,請告訴我,我需要的確切位置, ,就好像我在上面寫了上面的語句,它表示無法解析的變量「it」 – junaidp

+0

'getDate()'只返回月份的日期(1-31),因此Jan 12將返回與2月12日相同的值。我懷疑這是OP想要的。 – jfriend00

+0

@junaidp Grails代碼添加 – steveyang

0

使用==操作:如果你要比較毫秒的精度

if(indexDate == todaysDate) { 
    alert("They're the same!"); 
} 
+0

會不會需要匹配一天的時間? – Thilo

+0

但我寫這個if語句,如果我寫在每個外面,它說未解決的變量「indexDate」,如果我寫在每個它說無法解決的變量todaysDate – junaidp

0

,你可以做以下方式之一進行比較:

function getNumDays(date) { 
    return(Math.floor(date.getTime()/(1000*60*60*24))); 
} 

if (getNumDays(it.indexDate) == getNumDays(todaysDate)) { 
    // same day 
} 

或者,也比較年,月,月,日的更強力的方式:

if ((it.indexDate.getFullYear() == todaysDate.getFullYear()) && 
    (it.indexDate.getDate() == todaysDate.getDate()) && 
    (it.indexDate.getDay() == todaysDate.getDay())) { 
    // same day 
} 

第一個選項獲取自1970年1月1日以來的毫秒數,並計算自此之後已經過去了多少天(舍入)。如果兩個日期值都是自那以後的相同天數,那麼它們是同一天。

第二個選項比較4位數的年份,月份和月份的日期,如果三者相同,那麼它必須是同一天。

+0

謝謝,但我寫這個如果陳述,如果我寫在每個外面,它說無法解析的變量「indexDate」,如果我寫內每個它說未解決的變量todaysDate – junaidp