【问题标题】:How to find available timezones in a country using momentjs如何使用 momentjs 在一个国家/地区查找可用时区
【发布时间】:2018-01-27 17:31:02
【问题描述】:

我想按国家/地区名称从 momentjs 检索具有 utc 偏移量的时区列表。例如,我想要类似的东西

   momentObject.getTimezones("America")

这将返回一个时区列表,如

   ['UTC−11:00 (ST) — American Samoa, Jarvis Island, Kingman Reef, Midway Atoll, Palmyra Atoll',
    ....

库中是否存在这样的功能?

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    该功能已被请求,并在以下拉取请求中待处理:

    https://github.com/moment/moment-timezone/pull/410

    但是,它会接受国家代码(例如US),并会返回时区标识符列表,例如America/Los_Angeles。请注意,您提供的列表不是要返回的值。

    另外请记住,如果不考虑时间点,就不能将单个偏移量分配给整个时区,因此这也不是功能的一部分。请参阅the timezone tag wiki 中的“时区!= 偏移量”。

    【讨论】:

    【解决方案2】:

    时刻-时区

    MomentJS 提供了一个 moment-timezone 包:

    moment.tz.names(); 将返回一个包含所有时区的数组。这些时区以各自的大陆为前缀; America/Detroit。您可以使用纯 JavaScript 按大陆轻松过滤此数组。

    国家和时区

    要获得国家/时区匹配,您肯定需要另一个包,如 countries-and-timezones,它提供了一个简单的 API 来通过 ISO 国家代码获取时区:

    countriesAndTimezones.getTimezonesForCountry('MX');
    

    返回:

    [ { name: 'America/Mexico_City',
        utcOffset: -360,
        offsetStr: '-06:00',
        countries: [ 'MX' ] },
      { name: 'America/Cancun',
        utcOffset: -300,
        offsetStr: '-05:00',
        countries: [ 'MX' ] },
      { name: 'America/Merida',
        utcOffset: -360,
        offsetStr: '-06:00',
        countries: [ 'MX' ] },
      { name: 'America/Monterrey',
    
    ...
    

    请注意,国家和时区之间存在 n x m 关系(因此时区可能存在于多个国家/地区)。因此这个包还包含一个getCountriesForTimezone() 方法。

    【讨论】:

      【解决方案3】:

      任何想在 momentjs 中按国家/地区代码获取时区而无需等待 https://github.com/moment/moment-timezone/pull/410 合并的人,您都可以从 moment 包中获取 .json 文件并检索包含时区的国家/地区对象。

      看一看:https://github.com/moment/moment-timezone/blob/develop/data/meta/latest.json 这个评论也应该有帮助:https://github.com/moment/moment-timezone/issues/289#issuecomment-354585784

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        • 1970-01-01
        • 2014-03-19
        • 2019-06-24
        • 2023-01-19
        • 2011-01-09
        • 1970-01-01
        相关资源
        最近更新 更多