【问题标题】:Get new Date in Cloud Functions in specific time zone在特定时区的 Cloud Functions 中获取新日期
【发布时间】:2019-11-22 14:40:31
【问题描述】:

我正在尝试使用 new Date() 在 Cloud Functions 中获取我的本地日期时间,但结果是偏移量 + 3。 有什么办法可以得到正确的偏移量?不用转换,使用new Date().getTimezoneOffset

【问题讨论】:

  • 你能提供输出吗?
  • “本地”日期时间是什么意思?您的计算机时区?
  • @aomerk 2019-11-25T11:18:56 ,但正确的输出应该是 2019-11-25T08:18:56
  • @Freez 我的位置,巴西人
  • @edilson14 从请求中获取 IP 地址,如果您想要的话,您可以使用 IP 地址位置来获取正确的日期。如果只想输出巴西语,请查看localeString 以及如何使用

标签: javascript google-cloud-functions


【解决方案1】:

无论环境的实际位置如何,Cloud Functions 都在 GMT 时区运行。如果您想要特定时区的日期/时间,则必须自己在代码中将其转换为该时区。

【讨论】:

  • 你能提供环境位置的任何链接/文件吗,我在谷歌上没有找到任何相关信息
【解决方案2】:

JavaScript Date 对象仅代表地球上所有人的时间点,与时区无关。如果您打印 Date 对象,您将看到一个时区,但这只是因为呈现日期的代码使用的是计算机上配置的时钟的时区。无论日期是哪台计算机,或者它配置为哪个时区,它仍然是同一时间点。

如果您想为特定时区的人设置日期格式,则必须为此编写一些代码。一个可以帮助解决这个问题的通用库是momentjs,使用它的timezone plugin

【讨论】:

  • 谢谢,这对我有用,但我的声誉低于 15 岁,所以我无法投票回复:/
【解决方案3】:

这是我为 Cloud Functions 创建的方法,希望对您有所帮助:

function datetimeLocal(timezone : number) : Date {
    const localdate = new Date(Date.parse(new Date().toLocaleString('en-US', { timeZone: 'UTC' })) + (timezone * 60 * 60 * 1000));
    return localdate;
 }

然后你可以调用这个函数,传递所需的本地时区,例如:datetimeLocal(-3),你会根据你需要的时区收到一个新的 Date() 对象。

我再说一遍,为了让它工作,不需要更改字符串 'en-US' 和 'UTC'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2013-03-15
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多