【问题标题】:Working with dates & timestamps how to get yesteday. today etc使用日期和时间戳如何获取昨天。今天等
【发布时间】:2014-02-27 18:11:06
【问题描述】:

所以我是脚本新手,还在努力学习,所以要温柔。 我已经阅读了论坛和一些帖子,正在寻找答案,但我无法完全解决。

我想查看工作表中的时间戳日期是否来自 X 天前、x 天内的任何时间,并在其他日子几乎从今天到大约 31 天后执行此操作。 我之前有一个脚本,它会在哪里找到它是否早于某个日期。但我认为我的 equal 的原因不是在数据中找到匹配项,因为它正在寻找确切的日期和 时间。不仅仅是约会。

我尝试过使用 getDate,但例如,如果我现在确实得到了日期。我得到 4,我减去 7,7 天前,我得到 -3。所以这种方法不好。到目前为止,这是我的代码,但其中很多是我在玩并尝试计算日期等(只是想我会发布到目前为止的工作,所以你可以看到我已经尝试过)。

      function snapshot() {

    var dateColumn = 2;
    var findColumn = 4;
   var toFind = "Yes - Complete (going ahead)";
   var daysWorth = 16;
   //  var daysWorth1 = 17;

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Form Responses');
  var values = sheet.getDataRange().getValues();
  var valuesLength = values.length;
  Logger.log("1) "+valuesLength);

  var today = new Date().getTime();
  var gap = new Date(today - daysWorth*24*60*60*1000);
  Logger.log("2) today  " +today);
 // Logger.log("gap  "  +gap);
//  Logger.log("today  " +today.getTime());
 // Logger.log("gap  "  +gap.getTime());
//  Logger.log ("gap in milli " + daysWorth*24*60*60*1000 - daysWorth1*24*60*60*1000);
 // Logger.log ("gap in milli " + daysWorth1*24*60*60*1000);
  var test = today / 1*24*60*60*1000;


  var counter = 1;
  var completed = 0;
  var attempted = 0;

  Logger.log("3) "+values[counter][dateColumn - 1].getDate());
  Logger.log("4) "+today);
  Logger.log("4a) A day "+1*24*60*60*1000);
  Logger.log("4b)  "+   test);
  while (counter < valuesLength){

   if (values[counter][dateColumn - 1].getDate() == today && values[counter][findColumn - 1] == toFind)
    {completed++;}
   if (values[counter][dateColumn - 1].getDate() == today && values[counter][findColumn - 1] != toFind)
   {attempted++;}

      counter++


  Logger.log("5) "+completed);
  Logger.log("6) "+attempted);

  }
}

感谢阅读:)

【问题讨论】:

    标签: javascript date google-apps-script timestamp google-sheets


    【解决方案1】:

    您应该尝试使用 getTime(),它以毫秒为单位提供更易于操作的值。 setHour() 和 setMinutes() 还可以帮助您以更好的方式确定您正在测试的内容。为了更好地理解 js 中的 Date(),您应该阅读 W3school 站点中的专用页面。
    无论如何,您的代码几乎没有更改,现在应该可以工作了。

    function snapshot() {
      var dateColumn = 0;
      var findColumn = 2;
      var toFind = "comment";  // I made some change to feet to my spreadsheet
      var daysWorth = 336;  // I made some change to feet to my spreadsheet
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('Form Responses');
      var values = sheet.getDataRange().getValues();
    
      var today = new Date();
      var thisMorning = today;
      thisMorning.setHours(0);
      thisMorning.setMinutes(0);
    
      var gap = new Date().setTime(thisMorning.getTime() - daysWorth*24*60*60*1000);
    
      var completed = 0;
      var attempted = 0;
    
      for(var counter in values){
         var testDate = new Date(values[counter][dateColumn]);
    //    Logger.log("row: "+counter+" date time is: "+testDate.getTime());
    //    Logger.log("(testDate - today) time: "+testDate.getTime()-thisMorning.getTime());
      // values[counter][dateColumn].getDate() == today // this will never work as "today" is right now.
    
        if (testDate > thisMorning && values[counter][findColumn] == toFind)
        {completed++;}
        if (testDate > thisMorning && values[counter][findColumn] != toFind)
        {attempted++;}
      }
      Logger.log("today we had: "+completed+" completed and: "+attempted+" attempted");
    
      // change "thisMorning" to an other date to do an other check exemple with gap
      for(var counter in values){
        var testDate = new Date(values[counter][dateColumn]);
        if (testDate > gap && values[counter][findColumn] == toFind)
        {completed++;}
        if (testDate > gap && values[counter][findColumn] != toFind)
        {attempted++;}
      }
      Logger.log("since "+daysWorth+" we had: "+completed+" completed and: "+attempted+" attempted");
    }
    

    【讨论】:

    • 嗨@Harold 谢谢你的回复。我确实玩过get time,我想我遇到的问题是让它整天指定。现在将尝试您的代码并查看。非常感谢
    • 刚刚测试了脚本并且确实可以计算日期 > 某个日期。但我遇到的主要问题是如何获取某个日期的所有条目,使用今天作为比较。即 X 天后整个 24 小时内尝试/完成的次数。 .setHour 和 .setMinute 给了我一些探索的东西。非常感谢
    • 根据您的建议,我添加了另一个 time var (endGap) 并将 gap 更改为 startGap。这使我能够选择 X 天前的一整天 :) 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多