【问题标题】:Moment JS - How to get time from another timezoneMoment JS - 如何从另一个时区获取时间
【发布时间】:2019-02-27 01:05:53
【问题描述】:

我有一个字符串“2019 年 1 月 24 日 12:00 PST”,其中时间设置为浏览器的时区。我如何使用 moment 将其转换为另一个时区(即 - America/New_York),然后获取该时区的时间?

所以在上面的示例中,我有字符串“2019 年 1 月 24 日 12:00 PST”,其中时区位于浏览器的时区(西雅图)中。将其转换为纽约时区时,我试图获得 'Jan 24, 2019 15:00'。

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    怎么样:

    var s = "Jan 24, 2019 12:00 PST";
    var d = new Date(s);
    var m = moment(d).tz("America/New_York");
    console.log(m.format("MMM DD Y, hh:mm z"));
    

    这里唯一担心的是你从哪里得到那个字符串。据我所知,该特定字符串适用于每个浏览器。但是 Date 构造函数似乎不支持在美国以外的命名偏移量,如“PST”,所以如果你在欧洲中部时间得到像 CEST 一样,那将不太有效。在这种情况下,只需切断 PST 并使用 Moment 的字符串解析函数对其进行解析。由于您已经知道该字符串是在用户所在的同一区域中生成的,因此您无论如何都不需要它。

    作为所有这些的替代方案,完全避免需要该字符串,或者从源服务器获取 ISO 中的日期,或者如果该字符串来自其他一些 Javascript,只需获取该 Date 对象并将其直接传递给瞬间。

    【讨论】:

      【解决方案2】:

      此评论强调了解析时区的问题,例如“PST”moment.js - How to parse a date string string with a text timezone like 'PST'?

      如果您绝对无法获得另一种格式的字符串,您可以将最后三个字符分开,然后与这样的对象进行自己的比较:

      var testDate = "Jan 24, 2019 12:00 PST";
      var timezones = {
          " GMT": " +0000",
          " EDT": " -0400",
          " EST": " -0500",
          " CDT": " -0500",
          " CST": " -0600",
          " MDT": " -0600",
          " MST": " -0700",
          " PDT": " -0700",
          " PST": " -0800"
      };
      
      const fixTimezone = dateStr => {
          let zone = dateStr.slice(-4);
          let time = dateStr.slice(0, -4);
          return time + timezones[zone];
      };
      
      let fixedDate = fixTimezone(testDate);
      console.log(fixedDate);
      console.log(
          moment(fixedDate)
              .tz("America/New_York")
              .format("MMM DD Y, hh:mm z")
      );
      
      

      使用moment-timezone.

      应该在 2019 年 1 月 24 日,美国东部标准时间 03:00

      https://jsfiddle.net/ethantrawick/xectfsby/12/

      【讨论】:

        猜你喜欢
        • 2021-01-30
        • 2015-06-09
        • 2020-12-28
        • 1970-01-01
        • 2011-03-13
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        相关资源
        最近更新 更多