【问题标题】:How to get timezone in 3 letters using momentjs?如何使用momentjs获取3个字母的时区?
【发布时间】:2019-09-24 03:46:38
【问题描述】:

我正在使用以下代码使用时刻库​​获取时区

console.log(moment.tz.names())

这给了我以下格式的结果

0: "Africa/Abidjan"
1: "Africa/Accra"
2: "Africa/Addis_Ababa"
3: "Africa/Algiers"
4: "Africa/Asmara"
5: "Africa/Asmera"
6: "Africa/Bamako"

我只需要得到类似的缩写

moment 可以提供这样的灵活性,而且我也需要得到补偿吗?

谢谢!!!

【问题讨论】:

    标签: javascript timezone momentjs timezone-offset


    【解决方案1】:

    您可以通过快速.map() 生成从moment.tz.names() 获得的完整区域名称的配套列表:

    let abbrs = moment.tz.names().map((z) => moment.tz(z).zoneAbbr());
    

    对于任何区域对象,.zoneAbbr() 给出区域缩写。

    如果你想要偏移量,你可以调用.utcOffset():

    let offsets = moment.tz.names().map((z) => moment.tz(z).utcOffset());
    

    或两者兼得:

    let zoneInfo = moment.tz.names().map((z) => {
      let zone = moment.tz(z);
      return {
        abbr: zone.zoneAbbr(),
        offset: zone.utcOffset()
      };
    });
    

    【讨论】:

    • 我收到以下错误(index):33 Uncaught TypeError: Cannot read property 'names' of undefined at window.onload ((index):33) 你能给我看看小提琴吗?
    • @Profer 您确定要同时导入moment.jsmoment-timezone.js
    • 嗯,它的工作jsfiddle.net/godn8u3h。还有一个问题,我也可以得到偏移量吗?
    • @Profer 是的,您可以做同样的事情,但调用.utcOffset() 而不是.zoneAbbr()。我会更新答案。
    • 好的,非常感谢。我可以在“HH:mm”中获得偏移吗这是最后一个
    【解决方案2】:

    您可以使用moment.format(string) 通过传递z 参数来获取缩写:

    moment.tz(zone).format('z')
    

    并通过传递Z 参数进行偏移:

    moment.tz(zone).format('Z')
    

    console.log(
      moment.tz.names().forEach(zone => { 
        console.log( moment.tz(zone).format('Z z') ) 
      }) 
    )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.25/moment-timezone-with-data.min.js"></script>

    请注意,z 格式化标记并不总是显示缩写的时区名称,而是会显示每个区域的时间偏移量,moment#zoneAbbr 的时间偏移量相同。

    【讨论】:

    • 我需要根据dst 的偏移量可以吗?因为在dst 中减去/增加了一小时
    • 它是 DST 感知的,并且在解析时将使用正确的偏移量。
    • 嗨,在上述时区列表中,当我在 google 上搜索时,est - utc 的差异是 -05:00,它是 -04:00。你能解释一下吗
    • moment.tz('US/Eastern').format('Z') 实际上返回 -04:00 而不是 -05:00
    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2016-03-12
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多