簡體   English   中英

在 javascript (GAS) 中將字符串轉換為多維數組中的日期時出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM