https://github.com/mde/timezone-js
以上使用返回特定时区的日期:
var dt = new timezoneJS.Date('America/New_York');
var dt = new timezoneJS.Date('Asia/Kolkata');
根据我的研究,它接受的城市很少(比如只有来自印度的加尔各答)。我怎样才能使它适用于所有国家的所有主要城市?
https://github.com/mde/timezone-js
以上使用返回特定时区的日期:
var dt = new timezoneJS.Date('America/New_York');
var dt = new timezoneJS.Date('Asia/Kolkata');
根据我的研究,它接受的城市很少(比如只有来自印度的加尔各答)。我怎样才能使它适用于所有国家的所有主要城市?
tz@iana.org
这是邮件列表上反复讨论的主题。基本答案是奥尔森数据库中每个时区都有一个名称,对于印度,它是亚洲/加尔各答(例如,对于美国,太平洋时区由 America/Los_Angeles 标识)。通常,使用的名称标识了首次创建列表时所在时区的大陆和最大城市(还有其他标准;它们记录在 Olson 数据库数据随附的 Theory 文件中)。这些名称供内部使用;它们对人类来说是半有意义的,但它们并没有以最好的方式呈现(没有国家、用下划线代替空格的名称、英语化的名称等)。
处理此问题的推荐方法是创建您自己的城市名称列表,可能还包含国家信息,并将每个城市名称映射到适当的时区。
请注意,彻底做到这一点真的很难。有些区域很小。最近讨论的一个是欧洲/布辛根;这是一个德国的“飞地”,并不总是与周围的瑞士各州同时改变时间,而是保持柏林时间(或其他时间)。您在美国部分地区遇到了类似的问题;印第安纳州有许多地方在冬季和夏季(标准和夏令时)之间的时间变化不同,有些地方在东部时区,有些在中部,有些地方根本没有改变时区(所以时间冬季与东部相同,夏季与中部相同)。中国有一个城镇(地区),汉族(中国)人口使用中国时间(亚洲/上海,UTC+08:00),但当地人口使用不同的时区(UTC+06:00);同一个地方,不同的时区,适合不同的人。区域为新疆;条目是亚洲/乌鲁木齐。
您可以从以下位置下载数据和代码:
我不确定是否所有历史版本都可以从 IANA 网站获得。
您需要知道此表示法的当前版本号(2012j — 2012 年第 10 版,于 2012-11-12 发布)。一般的“最新”版本链接是:
这些名称不会更改,因此它们将始终检索最新版本。但是,文件名并不能告诉您当前版本是什么;你必须向内看才能发现——你赢了一些,你也输了一些。