google-apps-script - GoogleApps Utilities.formatDate 返回错误的日期

标签 google-apps-script google-spreadsheet-api

我有一个 Google 电子表格并尝试从工作表中读取日期。以下脚本以字符串形式提供日期。但这一天太少了。

function testDate() {
  var selectedSpreadsheetId = PropertiesService.getUserProperties().getProperty("spreadsheetId");
  var sheet = SpreadsheetApp.openById(selectedSpreadsheetId);

  var rows = sheet.getDataRange();
  var values = rows.getValues();
  var row = values[0];
  var test = "";
  var test  = Utilities.formatDate(new Date(row[0]), "GMT+1", "MM/dd/yyyy");     
  Logger.log("result is: "+test)
}

您需要创建一个 Google 电子表格并在左上角的单元格中输入日期 14.10.2017。示例中给出的日期是 GERMAN 日期格式。

日志中的结果是 10/13/2017 但应该是 10/14/2017

我知道 Google 使用“普通”Java SimpleDateFormat

为什么?

最佳答案

你不应该像你那样硬编码时区,因为你的国家使用夏令时。
您可以使用 Session.getScriptTimeZone()代替或 SpreadsheetApp.getActive().getSpreadsheetTimeZone()
在您的代码中,它如下所示:

  var test  = Utilities.formatDate(new Date(row[0]), Session.getScriptTimeZone(), "MM/dd/yyyy");     
  var test2  = Utilities.formatDate(new Date(row[0]), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "MM/dd/yyyy");     
  Logger.log("result is: "+test)
  Logger.log("result2 is: "+test2)

enter image description here

关于google-apps-script - GoogleApps Utilities.formatDate 返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46658500/

相关文章:

google-sheets - 对合并单元格的 Google 电子表格单元格引用

javascript - 如何使用javascript从谷歌电子表格中一列的所有值中获取排序的唯一值

google-api - Google Sheet API 附加到特定工作表

Java 到 Google 电子表格

javascript - 仅在谷歌驱动器中使用谷歌表格作为数据库

javascript - 形成 html 谷歌脚本

javascript - 使用 Calendar API 更改 Google 日历事件的空闲/忙碌

javascript - 从不同的 HTML 标签中获取多个对应的值以在一个函数中使用

javascript - 引用错误 : "getElementsByClassName" is not defined

javascript - 如果 Google 表格行不包含字符串,则删除或过滤该行