如何使用momentjs查找国家/地区的可用时区

时间:2017-08-19 00:47:12

标签: javascript timezone momentjs

我想通过国家/地区名称检索来自momentjs的utc偏移量的时区列表。例如,我想要像

这样的东西
   momentObject.getTimezones("America")

哪会返回像

这样的时区列表
   ['UTC−11:00 (ST) — American Samoa, Jarvis Island, Kingman Reef, Midway Atoll, Palmyra Atoll',
    ....

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

3 个答案:

答案 0 :(得分:2)

矩时区

MomentJS提供了一个时刻时区包:

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()方法。

答案 1 :(得分:2)

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

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

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

另外请记住,在不考虑时间点的情况下,无法为整个时区分配单个偏移,因此也不会成为功能的一部分。请参阅the timezone tag wiki中的“时区!=偏移量”。

答案 2 :(得分:0)

任何人都在寻找如何在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