你有没有想过,电脑是怎么知道"纽约现在是否处于夏令时"的?答案就是 IANA 时区数据库——一套公开维护的全球时区规则库,几乎所有现代操作系统、编程语言和网站都在使用。
它又称 tz database、zoneinfo 或 Olson database,由互联网号码分配局(IANA)维护,记录了从 1970 年(部分地区更早)以来全球各地区的时区偏移、夏令时起止规则与历史变更。它不只是一个偏移表,而是一套完整的时间规则历史。
这套数据库最早由 Arthur David Olson 于 1980 年代发起,后由志愿者与 IANA 共同维护,每年随各国政策变化更新数个版本。
数据库中的时区采用"区域/城市"格式命名,例如 Asia/Shanghai、America/New_York、Europe/London、Australia/Sydney。这种命名比"UTC+8"或"CST"可靠得多,因为它指向一个具体的地理区域,而不是一个可能变化的数值或模糊的缩写。
这正是软件开发中的最佳实践:存储时间时用 UTC 或时间戳,存储用户时区时用 Asia/Shanghai 这样的标识符,展示时再由系统按当前规则换算。这样即使某国突然修改夏令时政策,只要更新时区数据库,历史与未来时间的换算都会自动正确。
因为偏移量会变。伦敦冬季是 UTC+0、夏季是 UTC+1;中国曾在 1986 至 1991 年实行夏令时;个别国家甚至会永久更改所属时区。如果系统里硬编码"+8",一旦规则变动,所有历史数据都会算错。使用 IANA 标识符则完全没有这个问题。
IANA 定期发布新版本,操作系统与语言运行时通过系统更新或库更新同步。PHP 通过 timezonedb 扩展更新,Java 随 JDK 更新,Linux 发行版则通过 tzdata 软件包更新。服务器长期不更新可能会出现个别地区时间算错的情况,因此运维中建议定期检查时区库版本。
本站所有城市时间页面均内置 IANA 时区规则,并为每座城市标注了对应的时区标识符(例如东京为 Asia/Tokyo、纽约为 America/New_York)。页面时钟按该规则实时换算,进入或退出夏令时会自动生效,无需人工维护。若需同时对照多座城市,可以使用 时区对比工具 一次查看最多 8 城的当地时间、UTC 偏移与工作状态。
公历农历有什么区别:二十四节气与闰年规则详解Unix 时间戳是什么:秒级与毫秒级时间戳换算原理时区与时差是怎么算的:UTC、GMT 与北京时间对照原理时区缩写CST、EST、GMT+8有哪些坑手机电脑时间不准怎么办:时间同步全攻略国际日期变更线:一天从哪里开始世界时UT0、UT1、UT2与UTC是什么关系GMT与UTC到底有什么区别Unix时间戳是什么:10位与13位的区别时差怎么算:两地时间换算方法与公式中国国家授时中心:北京时间是怎么产生的夏令时是什么:为什么要调时钟全球时区是怎么划分的NTP网络时间协议:电脑的时间从哪里来什么是闰秒:为什么全世界要多加一秒UTC协调世界时是什么