Google Script等于约会?

时间:2014-02-28 10:33:00

标签: javascript date google-apps-script google-sheets

我正在创建一个新的电子表格,该电子表格将提前一周提醒我审核日期。我正在尝试做一个非常基本的测试,检查今天提前7天的日期是否等于电子表格上的日期。

调试时,我注意到时间被添加到日期,所以我将时间设置为00:00:00以尝试获得匹配,这仍然不起作用。

function main(){
  var d = new Date();
  d.setDate(d.getDate()+7);
  d.setHours(0,0,0,0);
  for (var j = 53; j < lastrow-1; j++){
    var Staff = StaffObjects[j];
    var name = Staff.firstName + " " + Staff.surname;
    var onemonth = Staff.oneMonth;
    onemonth.setHours(0,0,0,0);
    if (d == onemonth){
      messagePT2+= name + "is due there one month review on " + onemonth + "<br>";
    }
  }
}

调试时,值完全相同:

d = 2014年3月7日星期五00:00:00 GMT-0000(GMT) onemonth = 2014年3月7日星期五00:00:00 GMT-0000(GMT)

然而,这并没有注册为匹配,为什么会这样,我怎么能解决这个问题呢?最后。有些日期有不同的时区,比如这个.. Wed Wed 07 2014 00:00:00 GMT + 0100(BST)有没有办法检查日期?

非常感谢,

2 个答案:

答案 0 :(得分:3)

比较日期对象的相等性并不像那样。如果将它们转换为数字(或字符串)进行比较,则会更好。试试这个:

if (d.getTime() == onemonth.getTime()){
  //etc
}

请注意,与><及其变体进行比较时,它确实有效(因为它使用valueOf)。

答案 1 :(得分:3)

在比较中,你应该在每个部分使用.getTime()因为有2个不同的对象即使它们的值相等也永远不会相等。

所以这个条件应该有效:

if (d.getTime() == onemonth.getTime()){