从电子表格中读取不同时区的谷歌应用程序脚本



我有一个谷歌应用程序脚本,它从电子表格中读取一行,其中包含两个日期。

这两个日期的时区不同,我不明白为什么。

单元格内容为:

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+;?

我(认为我(已经正确设置了电子表格和脚本时区:

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/

相关内容

最新更新