GRAILS:在每个声明中需要帮助

时间:2011-11-22 03:49:26

标签: javascript grails

我是JavaScript的新手,我有一个非常基本的问题。

我在每个语句中的警报中都有这个语句,它完美地运行:

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

现在我有了这个变量:

var todaysDate = new Date ;

我想检查上面的indexDate是否与todaysDate相同。

我怎么能做到这一点?

感谢。

3 个答案:

答案 0 :(得分:0)

使用==运算符:

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

答案 1 :(得分:0)

如果要与毫秒的精度进行比较,则需要比较getTime()对象的Date值。

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>

答案 2 :(得分: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位数年份,月份和月份日期,如果所有三个相等,那么它必须是同一天。