Google 应用脚本从电子表格中读取不同的时区
Google app script reading different timezones from Spreadsheet
我有一个 Google 应用程序脚本,它从电子表格中读取包含两个日期的行。
这两个日期是用不同的时区读取的,我不明白为什么。
单元格内容为:
25/12/1941 16/02/2021
日期已通读
var dataRng = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Elenco').getRange("G"+rowElenco+":AC"+rowElenco);
var dati = dataRng.getValues();
第一个日期读作
Thu Dec 25 1941 00:00:00 GMT+0200 (Central European Standard Time)
第二次约会是
Tue Feb 16 2021 00:00:00 GMT+0100 (Central European Standard Time)
为什么第一个日期是 GMT+"?
我(认为我)已经正确设置了 SpreadSheet 和脚本时区:
Logger.log(Session.getScriptTimeZone());
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone());
输出:
03:49:18 Informazioni Europe/Rome
03:49:18 Informazioni Europe/Rome
这导致了问题,因为我尝试格式化日期和
var dtNascita = Utilities.formatDate(dati[0][11], "GMT+1", "dd/MM/yy");
变成
dtNascita: "24/12/41"
我错过了什么?
您必须在转换日期格式时设置时区,以便始终考虑相同的值:
var ss = SpreadsheetApp.getActiveSpreadsheet();
Utilities.formatDate(dati[0][11], ss.getSpreadsheetTimeZone(), "dd/MM/yy");
https://www.analyticstraps.com/utc-vs-gmt-vs-getspreadsheettimezone/
我有一个 Google 应用程序脚本,它从电子表格中读取包含两个日期的行。
这两个日期是用不同的时区读取的,我不明白为什么。
单元格内容为:
25/12/1941 16/02/2021
日期已通读
var dataRng = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Elenco').getRange("G"+rowElenco+":AC"+rowElenco);
var dati = dataRng.getValues();
第一个日期读作
Thu Dec 25 1941 00:00:00 GMT+0200 (Central European Standard Time)
第二次约会是
Tue Feb 16 2021 00:00:00 GMT+0100 (Central European Standard Time)
为什么第一个日期是 GMT+"?
我(认为我)已经正确设置了 SpreadSheet 和脚本时区:
Logger.log(Session.getScriptTimeZone());
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone());
输出:
03:49:18 Informazioni Europe/Rome
03:49:18 Informazioni Europe/Rome
这导致了问题,因为我尝试格式化日期和
var dtNascita = Utilities.formatDate(dati[0][11], "GMT+1", "dd/MM/yy");
变成
dtNascita: "24/12/41"
我错过了什么?
您必须在转换日期格式时设置时区,以便始终考虑相同的值:
var ss = SpreadsheetApp.getActiveSpreadsheet();
Utilities.formatDate(dati[0][11], ss.getSpreadsheetTimeZone(), "dd/MM/yy");
https://www.analyticstraps.com/utc-vs-gmt-vs-getspreadsheettimezone/