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

泰勒·佩奇(Taylor Page)

我的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));
  }
}
塞尔萨·印萨斯(Serge insas)

使用时,您将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Google表格上查询和比较日期

将日期时间值与空值进行比较时日期时间值不正确

使用Google表格自动将日期文本转换为正确的日期格式

Google Apps 脚本中的时区不正确

月从日期返回不正确的值

与Oracle中的日期字符串进行比较时,TO_CHAR返回不正确的结果

使用Google Apps脚本根据Google表格中的值禁用日期选择器中的日期

Google表格导入范围返回了不正确的数据

从 Google 表格中的 IMPORTXML 返回的数据不正确

Google表格/应用脚本可在输入值时自动将日期戳添加到表格中

Google 表格:查询以将列转换为日期并与另一个日期进行比较

为什么添加日期对象和时间对象会返回不正确的值?

Google 表格 getDay() 显示不正确的值

使用Google Apps脚本将数据从Google表格注入到Google幻灯片期间,将日期转换为dd / mm / yyyy

Google表格会自动将字符串解析为日期...有时?

Lua:尝试将布尔值与数字进行比较

如何将字符数组与布尔值进行比较

电子表格上的Google日期与脚本记录器中的日期不同。这是时区问题吗?

使用 Apps 脚本在 Google 表格中自动设置列的日期

MVC匿名JSON返回不正确的布尔值?

Google 表格 - 比较日期并根据要求返回最新行

Google表格脚本在getLastRow上崩溃

Google表格上= IMPORTXML的正确路径

javascript上的值比较,但显示不正确的结果

在Google表格上对数据进行排序

自动执行Google表格(Google脚本),以便在单元格日期过去时将行移动到另一张表格中

如何在 Google 表格中的日期和使用 Google Apps 脚本的给定日期之间进行选择

Google表格会根据单元格内容将光标移至onEdit触发器上

使用Google Apps脚本在Google表格中添加带日期的行,并保留表格中指定的日期格式