【问题标题】:Converting timestamps to dates in Google sheet script在 Google 工作表脚本中将时间戳转换为日期
【发布时间】:2019-03-16 01:54:05
【问题描述】:

我正在编写一个以包含日期的列为目标的代码,我想获取日期并将其与当前日期进行比较,以便了解两者之间的差异。

我遇到了一个我无法解决的问题。似乎当我在我的范围内使用 .getValues 时,它会将每个时间戳放在一个数组中,然后将这些数组放在另一个数组中。像这样:[[(new Date(1539619200000))], [(new Date(1540396800000))], [(new Date(1540828800000))]]

我只想将所有值放在 1 个数组中,以便我可以开始解决如何将时间戳转换为正常日期。我也是这方面的初学者,所以如果这似乎是一个基本问题,我很抱歉。

function datesincolumn() //collects only the date values in range
{

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];
 var lastRow = sheet.getLastRow(); //will identify last row with any data 
 entered
 var range = sheet.getRange('D2:D' + lastRow); //will get range of cells 
 with data present
 var dates = range.getValues();//gets all values in the range
 var CurrentDate = new Date();
 var timestamps = [];

 for (i = 0; i <= dates.length; i++)
 {
   if (dates[i] >= i)
   {
     timestamps.push(dates[i]);
   }

 }

  Logger.log(dates);

}

【问题讨论】:

    标签: javascript datetime google-apps-script google-sheets


    【解决方案1】:

    当您使用.getValues() 时,您将总是得到一个二维数组。外部数组表示行,内部数组表示列。由于您只得到一列,您可以简单地将[0] 附加到您的dates[i]

    function datesincolumn() { //collects only the date values in range  
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[0];
      var lastRow = sheet.getLastRow(); //will identify last row with any data entered
      var range = sheet.getRange('D2:D' + lastRow); //will get range of cells with data present
      var dates = range.getValues();//gets all values in the range
      var CurrentDate = new Date();
      var timestamps = [];
      for (var i = 0; i <= dates.length; i++) {
        var date = dates[i][0];
        if (date >= i)
          timestamps.push(date);
      }
      Logger.log(dates);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-25
      • 1970-01-01
      • 2018-07-23
      • 2016-11-26
      • 2018-09-11
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      相关资源
      最近更新 更多