我想通过国家/地区名称检索来自momentjs的utc偏移量的时区列表。例如,我想要像
这样的东西 momentObject.getTimezones("America")
哪会返回像
这样的时区列表 ['UTC−11:00 (ST) — American Samoa, Jarvis Island, Kingman Reef, Midway Atoll, Palmyra Atoll',
....
库中是否存在这样的功能?
答案 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