GoogleApps Utilities.formatDate returns 错误的一天
GoogleApps Utilities.formatDate returns wrong day
我有一个 Google 传播sheet 并尝试从 sheet 中读取日期。以下脚本以字符串形式提供日期。不过一天也少了
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 Spreadsheet 并在左上角的单元格中输入日期 14.10.2017。示例中给出的日期是 GERMAN 日期格式。
日志中的结果是 10/13/2017 但应该是 10/14/2017
我知道 Google 使用 "normal" 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)
我有一个 Google 传播sheet 并尝试从 sheet 中读取日期。以下脚本以字符串形式提供日期。不过一天也少了
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 Spreadsheet 并在左上角的单元格中输入日期 14.10.2017。示例中给出的日期是 GERMAN 日期格式。
日志中的结果是 10/13/2017 但应该是 10/14/2017
我知道 Google 使用 "normal" 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)