【问题标题】:Correcting timezones using momentjs使用 momentjs 更正时区
【发布时间】:2020-01-23 16:16:51
【问题描述】:

我目前正在尝试从发送“错误”时间的 API 调整时区。

示例:

serverTimestamp = '2020-04-23T15:00:00.000+0000'
serverTimezone = 'America/New_York'

实际的 serverTimezone 是 'America/Los_Angeles'

服务器时间戳是太平洋时间上午 8 点,但时区显示的是纽约时间。 使用 momentJs,我如何将 serverTimestamp 转换为正确的时间(纽约时间上午 8 点)作为 UTC 时间?

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    我们可以使用moment.js根据我们的要求调整时区

    使用moment.tz.setDefault("GMT"); 更改默认日期选择器的时区

        $('#startdatetimepicker').datetimepicker({
            defaultDate: new Date()
        });
    
        $('#enddatetimepicker').datetimepicker();
    

    【讨论】:

      【解决方案2】:

      时间戳实际上是 GMT/UTC (+0000)。 EST 和 PST 波动一个小时,具体取决于美国是否处于夏令时。您的纽约时间为“2020-04-23T11:00:00.000-0400”,您的洛杉矶时间为“2020-04-23T08:00:00.000-0700”。

      就 ISO 时间戳而言,这些都是相同的时间。用户的计算机(或服务器)会自动将其转换为当地时区。

      如果您想使用 moment 将实际时间戳字符串转换为 PST,您可以使用 moment-timezone 扩展名。

      【讨论】:

      • 感谢布莱克的解释!事实上,我正在使用时刻时区,并且有类似 moment(serverTime).tz('America/New_York').utc().format() 的东西,这给了我 2020-04-23T15:00:00Z 这仍然不是纽约时间上午 8 点......
      • 对。现在是伦敦时间下午 3 点,纽约时间上午 11 点和洛杉矶时间上午 8 点。从我看到的情况来看是正确的。 moment(serverTime).tz('America/New_York').format(moment.ISO_8601) 有什么用?
      猜你喜欢
      • 2018-07-04
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多