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文件中(。这些名称仅供内部使用;它们对人类来说是半有意义的,但并没有以最好的方式呈现(没有国家,用下划线代替空格的名字,英国化的名字,等等(。
建议的处理方法是创建自己的城市名称列表,可能还包含国家信息,并将每个名称映射到适当的时区。
要注意,彻底做到这一点真的很难。有些区域相当小。最近正在讨论的一个问题是欧洲/布辛根;这是一个德语"惊呼",它并不总是与周围的瑞士州同时改变时间,而是与柏林时间(或therabouts(保持一致。你在美国部分地区遇到了类似的问题;印第安纳州有许多地方的冬季和夏季(标准和夏令时(时间发生了不同的变化,有些地方在东部时区,有些在中部时区,有些地方根本没有改变时区(因此冬季时区与东部时区相同,夏季时区与中部时区相同(。中国有一个城镇(地区(,汉族人口使用中国时间(亚洲/上海,UTC+08:00(,但当地人口使用不同的时区(UTC+06:00(;同一个地方,不同的时区,不同的人。该地区为新疆;参赛作品是亚洲/乌鲁木齐。
您可以从以下位置下载数据和代码:
- http://www.iana.org/time-zones/repository/releases/tzcode2012j.tar.gz
- http://www.iana.org/time-zones/repository/releases/tzdata2012j.tar.gz
- ftp://ftp.iana.org/tz/releases/tzcode2012j.tar.gz
- ftp://ftp.iana.org/tz/releases/tzdata2012j.tar.gz
我不确定是否所有的历史版本都可以从IANA网站获得。
你需要知道这个符号的当前版本号(2012j——2012年第10版,发布于2012-11-12(。一般的"最新"版本链接是:
- http://www.iana.org/time-zones/repository/tzcode-latest.tar.gz
- http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
- ftp://ftp.iana.org/tz/tzcode-latest.tar.gz
- ftp://ftp.iana.org/tz/tzdata-latest.tar.gz
这些名称不会更改,因此它们将始终检索最新版本。但是,文件名并不能告诉您当前版本是什么;你必须向内看才能发现——你赢了一些,也输了一些。