将Google表格中的日期与Google Apps脚本进行比较会返回不准确的布尔值

时间:2016-04-23 16:59:41

标签: google-apps-script google-sheets

我的Google表格电子表格中列出了我要与明天的日期进行比较的约会列表(以便我可以在前一天发送提醒)。我当前的代码在电子表格中没有的某些日期返回true。我们星期天没有预约,我目前正在星期六测试,但仍然接受一些真正的价值观。我彻底搜索了电子表格,查找可能的预订错误,但没有。然而,我注意到,当它查找日期4:24:2016(明天)时,它将在4:14:2016日期返回true。我现在非常难过。

sample(1:6, size = 44, replace = TRUE, prob = c(rep(1, 5), 2))

1 个答案:

答案 0 :(得分:2)

当您使用new Date()时,您获得的完整JS Date object 不仅包括日,月和年,还包括小时分,秒和毫秒

这就是为什么你的比较无法给出结果的原因。 只需将不需要的值设置为0即可。我使用getTime()来比较毫秒,但也可以使用toString(),只有日期对象不适合检查相等。

Logger对调试此类内容非常有帮助。

代码:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var apptDates = sheet.getRange(2,6, sheet.getLastRow() - 1, 1).getValues();
  for (var i = 0; i < apptDates.length; i++) {
    var apptDate = new Date(apptDates[i][0]);
    Logger.log(apptDate.getTime()+'  ==?  '+dayAway(new Date(new Date().setHours(0,0,0,0)), 1).getTime());
    Logger.log(apptDate.getTime() == dayAway(new Date(new Date().setHours(0,0,0,0)), 1).getTime());
  }
}

function dayAway(date, day) {
  return new Date(date.getTime() + day * 24 * 3600 * 1000);
}

enter image description here enter image description here