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