Google 脚本 "Utilities.formatDate" 不对时区参数做任何处理

Google Scripts "Utilities.formatDate" does nothing with the time zone parameter

这两行生成相同的输出:

Logger.log(Utilities.formatDate(new Date(), "ET", "yyyy-MM-dd'T'HH:mm:ss'Z'"));
Logger.log(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'"));

输出:

2:20:37 PM Info -> 2022-01-26T19:20:37Z
2:20:37 PM Info -> 2022-01-26T19:20:37Z

输入无关紧要,总是将日期转换为 UTC(可能),这使得无法打印正确的日期和时间。

在 Google 脚本中格式化日期时间的正确方法是什么?

“ET”不是可接受的时区名称。

为此,您将使用 'America/New_York'。

Apps Script 的文档没有指出这一点,这可能会让 non-developers 感到沮丧。这是所有 timeZone ids

的列表

此外,通过将 '' 放在 Z 周围,它会将其视为一个字符串,而只是 returns 带有 Z 的日期。我知道这就是应用程序脚本页面示例中的内容,但这是错误的。

试试这个:

Logger.log(Utilities.formatDate(new Date(), "America/New_York", "yyyy-MM-dd'T'HH:mm:ss z"));
Logger.log(Utilities.formatDate(new Date(), "America/New_York", "yyyy-MM-dd'T'HH:mm:ss Z"));
Logger.log(Utilities.formatDate(new Date(), "America/Los_Angeles", "yyyy-MM-dd'T'HH:mm:ss z"));
Logger.log(Utilities.formatDate(new Date(), "America/Los_Angeles", "yyyy-MM-dd'T'HH:mm:ss Z"));
Logger.log(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss Z"));