【问题标题】:Google Scripts "Utilities.formatDate" does nothing with the time zone parameter谷歌脚本“Utilities.formatDate”对时区参数没有任何作用
【发布时间】:2022-01-26 19:30:37
【问题描述】:

这两行生成相同的输出:

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 Scripts 中格式化日期时间的正确方法是什么?

【问题讨论】:

    标签: javascript date google-apps-script date-formatting


    【解决方案1】:

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

    为此,您将使用“America/New_York”。

    Apps Script 的文档没有说明这一点,这可能会让非开发人员感到沮丧。这是所有timeZone ids的列表

    另外,通过将 '' 放在 Z 周围,它会将其视为字符串并仅返回带有 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"));
    

    【讨论】:

    • “古怪”? "America/New_York" 是一个 IANA Time Zone 名称,多年来计算机时区名称的标准......更适合链接到的列表是 Wikipedia's
    • 正确,但对于我们这些非开发人员背景的人来说,弄清楚这一点真的很难,也很令人沮丧。
    • @Kris——如果它尝试使用常见的时区名称缩写会更令人沮丧,因为它们不是标准化的或唯一的(例如,EST 可以应用于 3 个不同的时区)。此外,IANA 位置还考虑了历史偏移和夏令时变化。
    • 好点,我更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多