如何在谷歌脚本中将文本作为日期插入单元格? (遵守时区转换)

时间:2018-03-16 02:17:28

标签: google-apps-script

我正在解析CSV文件。一个字段是2016-01-20 17:40:37格式的文本字符串。它应该在工作表中显示时看起来像这样。 脚本的时区为+9。电子表格的时区为+10。我该怎么做?

我可以得到:

tsheet=SpreadsheetApp.getActive().getSpreadsheetTimeZone()
tscript=Session.getScriptTimeZone()

我可以使用:

Utilities.formatDate(datetime, timezone, "yyyy-MM-dd'T'HH:mm:ss'Z'")

但我不明白该怎么做。

现在我的代码是:

date = "2016-01-20"                         //after regex parsing
time = "17:40:37"                           //after regex parsing
datetime = new Date(""+date + "T" + time+"Z")
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A2').setValue(datetime).setNumberFormat("dd/MM/yyyy hh:mm:ss");

单元格中的结果是: 21/01/2016 3:40:37。

预计与输入相同(没有时区转换的相同时间和日期): 2016-01-20 17:40:37 ,但在日期格式中,能够在电子表格中对日期相关的计算进行排序。

我只需要从外部源获取文本字符串并使其成为电子表格单元格中的日期(不考虑在设置中选择了哪个时区)。表示必须相同/同一天/同一小时。不一样的时代。

编辑:

看起来我是否使用

 sheet.getRange('A2').setValue("2016-01-20 17:40:37").setNumberFormat("dd/MM/yyyy hh:mm:ss"); 

它有效。这是正确的解决方案吗?

1 个答案:

答案 0 :(得分:0)

尝试使用Utilities。我使用下面的代码行来打印单元格中的时间戳。

.setValue(Utilities.formatDate(new Date(), "GMT-6:30", "MMM-dd-yyyy hh:mm"));