文章

IANA时区

IANA时区

IANA时区

IANA(Internet Assigned Numbers Authority,互联网号码分配机构)负责协调全球DNS的根域名、IP地址分配和其他互联网协议资源。

——百度百科

IANA时区命名:Area/Location

  1. Area为地理大区,不绑定国家是因为存在国家边界、国家变更问题
  2. Location为地理大区内的具体城市或地点

IANA时区示例

夏令时(DST,Daylight Saving Time),在每年的某个时间点将时间往后拨快一小时(某些地区可能是半小时,视政策而定),又在当年的某个时间点将时间往前拨回


以中国的夏令时制度(1986年至1991年)为例:

  1. 四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始
  2. 九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时,夏令时结束

——百度百科

时区UTC偏移量地理大区城市/地点
Asia/ShanghaiUTC+8亚洲上海
Asia/TokyoUTC+9亚洲日本
America/New_YorkUTC-5
UTC-4 (DST)
美洲纽约
Europe/LondonUTC+0
UTC+1 (DST)
欧洲伦敦
Europe/ParisUTC+1
UTC+2 (DST)
欧洲巴黎
Australia/SydneyUTC+10
UTC+11 (DST)
澳洲悉尼

IANA时区注意事项

  1. 避免使用具有歧义的时区缩写,如CST、IST等
  • CST可指代中国标准时间(China Standard Time)、北美中部时间(Central Standard Time)、古巴标准时间(Cuba Standard Time)
  • IST可指代印度标准时间(India Standard Time)、爱尔兰标准时间(Irish Standard Time)、以色列标准时间(Israel Standard Time)
  1. 时区规则(如夏令时起止时间、夏令时偏移时间等)可能因政策调整而变化,IANA时区数据库需要定期更新

操作系统内置时区数据库

操作系统时区数据库位置
Linux文件系统:/usr/share/zoneinfo/
Mac文件系统:/usr/share/zoneinfo/
Windows注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Golang的time.LoadLocation

编程语言不一定使用操作系统内置的时区数据库,比如Golang的time.LoadLocation(见Golang标准库文档):

LoadLocation looks for the IANA Time Zone database in the following locations in order:

  • the directory or uncompressed zip file named by the ZONEINFO environment variable
  • on a Unix system, the system standard installation location
  • $GOROOT/lib/time/zoneinfo.zip
  • the time/tzdata package, if it was imported

time.LoadLocation的IANA时区数据库查找顺序:

  1. ZONEINFO环境变量
  2. Unix系统上的已知安装位置(即/usr/share/zoneinfo/)
  3. $GOROOT/lib/time/zoneinfo.zip
  4. time/tzdata包(若通过import导入)
本文由作者按照 CC BY 4.0 进行授权