确定 Google 表单响应的正确日期格式

Determine correct date format of Google Form response

确定 Google 表单响应的正确日期格式(dd/mm 或 mm/dd)的最佳方法是什么。

当我使用 namedValues 对象时:

function onFormSubmit(e){
 var namedValues = e.namedValues;
 var date = namedValues['Date']; // Date=[05/06/2018]
 var date = new Date(date);
 Logger.log(date); //Sun May 06 00:00:00 GMT+10:00 2018
}

当我使用电子表格中的值时:

function onFormSubmit(e){  
  var range = e.range;
  var row = range.getRow();  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Form Responses 1');
  var date = sheet.getRange(row,2).getValue();
  Logger.log(date); //Mon Jun 05 00:00:00 GMT+10:00 2018
}

我不知道我是否应该这样做,但我对在 onFormSubmit 触发器中使用电子表格中的值犹豫不决,因为我过去曾经历过不稳定,我认为触发器之前 运行数据已发布到电子表格。

我在 Google 表单文档中找不到任何说明日期响应是否始终采用一致格式的内容。如果它总是 dd/mm/yyyy 我可以使用字符串部分构造日期。

有没有办法从 namedValues 对象中确定正确的日期格式?

P.S 我宁愿不使用 moment.js 库来满足这一要求,所以很想知道是否可以不用。

您的 Google 表单将不断以相同的格式提交日期,但您的 sheet 可能会更改格式的外观。

此外,Apps 脚本中现在内置了一个日期 format utility。您可以将日期字符串更改为您需要的格式。

 // This formats the date as Greenwich Mean Time in the format
 // year-month-dateThour-minute-second.
 var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
 Logger.log(formattedDate);