[英]Problem converting Strings into dates in a multidimensional array in javascript (GAS)
為了自動化一些日常流程,我正在從谷歌表中讀取數據並將它們放入字典中。 然后從所述字典中將數據寫入其他工作表。 除了一個我不明白的小錯誤之外,這一切都像一種魅力:
我從工作表中獲取所有數據並將其放入字典中,如下所示:
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
嘗試復制日志的 output,並將它們粘貼到隱藏字符顯示器中,例如:
https://www.soscisurvey.de/tools/view-chars.php
您會在第一個日期看到在日期開始時有 U+FEFF(但不是第二個日期)。
這是關於該角色的博客,又名ZERO WIDTH NO-BREAK SPACE
:
https://www.freecodecamp.org/news/a-quick-tale-about-feff-the-invisible-character-cd25cd4630e7/
現在您可以嘗試刪除該字符,或者查看為什么它被添加到該日期之前。 它與 utf16 編碼有關。
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.