【问题标题】:How to convert any time zone 8am into utc time如何将任何时区上午 8 点转换为 UTC 时间
【发布时间】:2019-03-29 09:39:47
【问题描述】:

如何使用 moment 或 javascript 将任何时区 8 AM 转换为 UTC 时间

moment("8:00:00","h:mm:ss").tz('time_zone).utc().toString()

我绑定了这个,但现在可以工作了。有什么解决办法吗?

【问题讨论】:

  • 您共享的代码中的time_zone 后面缺少'。无需调用tz(time_zone) 函数,您的代码似乎很好,为什么您说它不起作用?如果需要,可以使用format() 代替toString()

标签: javascript time momentjs


【解决方案1】:

如果你指的是用户的本地时区,你应该使用这个:

moment("8:00:00","H:mm:ss").utc().format()
  • H 用于 24 小时制,h 用于 12 小时制。虽然早上 8 点不一定重要,但应该有某种方法知道你不是指晚上 8 点。 (假设晚上 8 点是20:00:00)。

  • 您不需要 moment-timezone 的 tz 函数。除非您的源数据位于某个任意时区而不是用户的本地时区,否则您根本不需要时刻时区。

  • 使用format 代替toString。如果您希望以 特定 格式输出,请参阅 the documentation 以获取可以传递给该函数的参数。

如果您实际上是指具有 IANA 时区标识符(例如 America/New_York)的任意时区,那么它应该是这样的:

moment.tz("8:00:00","H:mm:ss","America/New_York").utc().format()
  • 有了这个,您确实需要时刻-时区。

最后,如果这是一个针对现代环境的新项目,Moment 团队建议您考虑改用 Luxon。 Luxon 从环境本身获取时区支持,因此体积也小得多。

luxon.DateTime.fromFormat('8:00:00', 'H:mm:ss', { zone: 'America/New_York'})
              .toUTC().toString()

【讨论】:

    【解决方案2】:

    使用您在其他地区拥有的当前日期值初始化一个变量(必须是日期格式)并使用.toUTCString() 方法。

    IST 到 UTC 的示例代码如下:

    var curdate = new Date("Fri Mar 29 2019 08:00:00 GMT+0530");
    
    var UTCdate = curdate.toUTCString();
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2018-09-03
    • 2010-09-16
    相关资源
    最近更新 更多