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