全球各地的时间并不统一,而是按经度划分为 24 个理论时区,每个时区相差 1 小时。要弄清两个城市之间相差几个小时,本质上只需要比较两个地方各自的 UTC 偏移量。
UTC(协调世界时)以原子时秒长为基准,通过闰秒与世界时保持接近,是今天国际通用的时间标准。GMT(格林尼治时间)历史上以本初子午线的平太阳时为准。两者在日常使用中数值相同,可以互换理解,但严格定义不同:GMT 是一种时间标准,UTC 是一种计时基准。日常查询时差时,把 UTC 与 GMT 当作同一基准即可。
同一时刻,UTC 偏移量较大的地区时间更早。北京为 UTC/GMT +8.00,东京为 UTC+9,东京就比北京早 1 小时;伦敦为 UTC+0,比北京晚 8 小时,夏令时期间变为 UTC+1,则比北京晚 7 小时。换算时只需把两地的 UTC 偏移量相减,差值就是时差。
北京时间即中国标准时间(CST),对应 UTC/GMT +8.00 东八区区时,由中国科学院国家授时中心计算与发布,全国统一使用。中国横跨多个理论时区,但全国统一采用东八区区时,因此新疆等西部地区的地方时与北京时间存在自然差异。北京时间目前不实行夏令时,全年时差固定,这一点在计算中美、中欧时差时尤其重要。
夏令时是部分国家或地区为充分利用日照、节约照明能源而实行的制度:夏季把时钟人为拨快 1 小时,冬季拨回。实行夏令时的地区,其 UTC 偏移量一年中会有两段取值,与北京时间之间的时差也随之变化。欧洲多国与北美大部分地区实行夏令时,而中国、日本、韩国等东亚地区目前不实行。查询这类城市时差时,必须确认查询日期是否处在夏令时生效期内。
一个地区的时区规则并非一成不变:夏令时的起止日期、甚至整个时区偏移都可能因政策调整而改变。IANA 时区数据库(tz / zoneinfo)记录了全球各地区的完整历史与现行时区规则,并每年更新十余次,被主流操作系统与开发语言广泛采用。按该库规则在服务端实时换算,才能保证任意历史日期或未来日期的时差都算得准确,而不是套用一个写死的固定值。