我的Google表格电子表格中有一份约会清单,我想将其与明天的日期进行比较(以便我可以在前一天发送提醒)。我当前的代码在电子表格上没有的某些日期返回true。我们周日没有约会,我目前正在星期六进行测试,但仍能得到一些真实的价值。我彻底搜索了电子表格,以查找可能的预订错误,但没有任何错误。但是,我确实注意到,当它查找日期4:24:2016(即明天)时,它将在4:14:2016日期返回true。在这一点上,我很沮丧。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var apptDates = sheet.getRange(2, 32, sheet.getLastRow() - 1, 1).getValues();
for (var i = 0; i <= apptDates.length; i++) {
var apptDate = new Date(apptDates[i][0]);
apptDate = apptDate.addHours(74);
function dayAway(date, day) {
return new Date(date.getTime() + day * (24 * 3600 * 1000));
}
Logger.log(apptDate >= dayAway(new Date(), 1));
}
}
使用时,您将new Date()
获得一个完整的JS Date对象,该对象不仅具有day,month和year,还具有hours,minutes,seconds和milliseconds。
这就是为什么您的比较无法给出结果的原因。只需将不需要的值设置为0
,它将起作用。我曾经getTime()
比较毫秒,但也可以使用毫秒toString()
,只有日期对象不适合检查相等性。
记录仪是调试此类事情的有力帮助。
代码 :
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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句