【问题标题】:How to make Google Cloud Function in the PDT or PST time zones如何在 PDT 或 PST 时区制作 Google Cloud Function
【发布时间】:2020-03-08 23:11:57
【问题描述】:

我有一个 Google Cloud 函数,可以从 UTC 日期解析月份中的某天 例如 myDate = 2019 年 11 月 13 日星期三 02:05:00 GMT+0000 (UTC) 这个日期实际上是旧金山时间(太平洋夏令时间或太平洋标准时间)的 11 月 12 日星期二。

但是在我的 Google 云功能中,当我尝试使用 myDate.getDate() 从该日期获取月份中的哪一天时,我得到的是 13 而不是 12。

我相信它返回 13 的原因是因为运行云功能的机器的时区是基于 UTC 时间的。当我在本地机器上运行这个函数时,我得到 12 作为正确的日期,因为我的本地机器是 PST 时间。

如何使 Google Cloud Function 在 PDT 或 PST 时区运行,以便 getDate() 函数为我提供 PDT 或 PST 时区的正确日期?

【问题讨论】:

    标签: javascript time timezone google-cloud-functions


    【解决方案1】:

    2020 年更新

    Node 14 开始,现在是 beta for Firebase,截至 2020 年 12 月 11 日,您应该能够做到

    process.env.TZ = 'America/Los_Angeles'
    

    【讨论】:

    • 我用我的脚本对此进行了测试,它运行良好 +1
    【解决方案2】:

    无法在 Cloud Functions 服务器实例上配置时区。

    如果您的代码完全不依赖于本地时区配置,那就更好了。如果您需要日期逻辑来格式化特定时区的日期,您应该使用知道如何执行此操作的库,例如 moment.它具有全面的日期处理实用程序,并且有一个时区插件。 https://momentjs.com/

    【讨论】:

      【解决方案3】:

      作为Doug said,无法在 Cloud Functions 服务器实例上配置时区。

      但是,您不需要库。使用 NodeJS 8 或 10 的 Google Cloud Functions 可以使用 JavaScript 国际化 API 获取特定时区的日期:

      let myDate = new Date("2019-11-13T02:05:00Z");  // the value you gave in the question
      let s = myDate.toLocaleDateString('en-US', { timeZone: 'America/Los_Angeles' })
      //=> "11/12/2019"
      

      如果您只想要月份的数字日期,您可以从那里的字符串中提取它。

      +(s.split('/')[1])   //=> 12
      

      【讨论】:

        【解决方案4】:

        无法将您的 Cloud Functions 设置为在 PDT 或 PST 中运行。这是一个常数,取决于它们运行的​​环境。在真机上。您可以找到 here 一个列表,其中包含您运行 Cloud Functions 的可能位置。

        如果您需要在 Cloud Function 中获取太平洋时间,只需使用这部分代码即可。它会给你 PDT。

        var offset = -8;
        new Date( new Date().getTime() + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )
        

        【讨论】:

          猜你喜欢
          • 2016-11-10
          • 2022-01-09
          • 1970-01-01
          • 1970-01-01
          • 2018-07-13
          • 1970-01-01
          • 2019-07-22
          • 2017-01-06
          • 2021-10-20
          相关资源
          最近更新 更多