Utilities.formatDate 显示错误的日期 - 日期格式不正确

Utilities.formatDate displaying wrong date - incorrect date format

只要用户在评论栏中输入数据,我的代码就会更新日期栏(格式为日期)。

此脚本运行了一段时间,但随后停止运行。

function UpdateDate() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { 
   var r = s.getActiveCell();
   if(r.getRow() > 2 && r.getColumn() == 6 && r.getValue()) { 
     var nextCell = r.offset(0, -1);
     
       var time = new Date();
     time = Utilities.formatDate(new Date(), "EST-05:00", "MM-DD-YY");
       nextCell.setValue(time);
   };
 };
}

现在每当我更新评论部分时,我都会得到 2/35/15,这显然是不正确的。我不知道是什么导致了这个问题。如有任何帮助,我们将不胜感激。

我将您代码的日期部分更改为:它似乎有效。

function UpdateDate() {
  var s = SpreadsheetApp.getActiveSheet();

  var stringAsDate = "";
  stringAsDate = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-yy");
  Logger.log(stringAsDate);
}

完整代码为:

function UpdateDate() {
 var s = SpreadsheetApp.getActiveSheet();

 if( s.getName() == "Sheet1" ) { 
   var r = s.getActiveCell();
   if(r.getRow() > 2 && r.getColumn() == 6 && r.getValue()) { 
     var nextCell = r.offset(0, -1);

     var stringAsDate = "";
     stringAsDate = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-yy");
     nextCell.setValue(stringAsDate);
   };
 };
}

您不需要 time 变量。 Utilities.formatDate() returns 一个字符串,所以将变量 time 设置为日期类型是没有意义的。

D 是年中的日期,而 d 是月中的日期。 DDdd 是零填充版本。您可能要求一月份的第 300 天。

time = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-YY");

spec 应用脚本使用的是 Java。