Utilities.formatDate显示错误的日期

时间:2015-02-07 02:46:29

标签: google-apps-script google-sheets datetime-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,这显然是不正确的。我无法弄清楚造成这个问题的原因。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

D是一年中的一天,而d是一个月中的一天。 DDdd是零填充版本。你有可能要求在1月份的第300天。

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

spec应用脚本使用的是按照Java。

答案 1 :(得分:0)

我将代码的日期部分更改为:它似乎正在运行。

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()返回一个字符串,因此将变量time设置为日期类型是没有意义的。