javascript - 在javascript(GAS)中将字符串转换为多维数组中的日期的问题

标签 javascript date google-apps-script

为了自动化一些日常流程,我从谷歌表格中读取数据并将它们放入字典中。然后从所述字典中将数据写入其他工作表。 除了一个我不明白的小错误外,这一切都像一个魅力:

我从工作表中获取所有数据并将其放入字典中,如下所示:

  var data = sheetImp.getRange(1,1, sheetImp.getLastRow(), sheetImp.getLastColumn()).getValues();
  var bib_tis = {};
  for (var i = 0; i < data.length; i++) {
    var date = new Date(data[i][0]);
    date.setHours(0, 0, 0, 0);
    if (date.valueOf() == yesterday.valueOf()) {
      var key = data[i][4] + ' ' + data[i][2]
      bib_tis[key.trim()] = data[i][5];    
    }
  }

我检查日期是否为昨天,因为我只需要该数据。 字典包含除第一行以外的所有行。 检查我是否执行了以下操作以进行调试:

  Logger.log(typeof(data[0][0]));    // string
  Logger.log(data[0][0].valueOf());  // 2019-11-12T00:00:00+01:00
  Logger.log(data[0][0]);            // 2019-11-12T00:00:00+01:00
  Logger.log(new Date(data[0][0]));  // Thu Jan 01 01:00:00 GMT+01:00 1970
  Logger.log(typeof(data[1][0]));    // string
  Logger.log(data[1][0].valueOf());  // 2019-11-12T00:00:00+01:00
  Logger.log(data[1][0]);            // 2019-11-12T00:00:00+01:00
  Logger.log(new Date(data[1][0]));  // Tue Nov 12 00:00:00 GMT+01:00 2019

为什么第一个日期不能正确转换?

我可以尝试反过来,将昨天转换为字符串并比较字符串 但我不明白为什么这对数组的第一行不起作用?

亲切的问候 简

最佳答案

你遇到了一个不可见的 utf 字符:U+FEFF

尝试复制日志的输出,并将它们粘贴到隐藏的字符显示器中,例如:

https://www.soscisurvey.de/tools/view-chars.php

您会看到,对于第一次约会,您在日期开始时有 U+FEFF(但对于第二次约会则没有)。

这是一篇关于那个 Angular 色的博客,又名 ZERO WIDTH NO-BREAK SPACE:

https://www.freecodecamp.org/news/a-quick-tale-about-feff-the-invisible-character-cd25cd4630e7/

现在您可以尝试剥离该字符,或查看为什么将其添加到该日期之前。跟utf16编码有关系。

祝你好运!

关于javascript - 在javascript(GAS)中将字符串转换为多维数组中的日期的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837109/

相关文章:

java - 字符串到日期的转换(一切似乎都很好但失败了)

google-apps-script - 从谷歌应用程序脚本预填谷歌表单

javascript - javascript中onchange事件什么时候触发

javascript - 测试 Javascript 函数的阻塞行为

php - 如何将 MySql DATETIME 结果放入 datetime-local 类型的 HTML 输入中

date - 归档时 NLog 不正确的日期

javascript - 使用 babel 在 JSX 中导出默认值失败

php - Jquery getScript 或 ajax 结合 php flush

regex - 计算用户自定义功能Google Apps脚本输入的值的范围

javascript - Google Apps 脚本中的数组 "includes"方法失败