我的Google表格电子表格中列出了我要与明天的日期进行比较的约会列表(以便我可以在前一天发送提醒)。我当前的代码在电子表格中没有的某些日期返回true。我们星期天没有预约,我目前正在星期六测试,但仍然接受一些真正的价值观。我彻底搜索了电子表格,查找可能的预订错误,但没有。然而,我注意到,当它查找日期4:24:2016(明天)时,它将在4:14:2016日期返回true。我现在非常难过。
sample(1:6, size = 44, replace = TRUE, prob = c(rep(1, 5), 2))
答案 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);
}