时区是规则,不是偏移
人们很容易把时区想成相对 UTC 的几个小时,这在多数时候管用,直到不管用。Europe/London 在一月是 UTC,在七月是 UTC+1;America/New_York 从 −5 变成 −4;Australia/Sydney 从 +11 变成 +10,顺序相反,因为那里的夏天在十二月。偏移是规则在某个特定日期的说法,不是地点的属性。
这就是本页在转换的瞬间读取偏移,而不是为每个时区存一个数字的原因。Asia/Kolkata 或 America/Sao_Paulo 这样的时区名,承载着该地区自 1970 年以来对时钟做过的全部历史,数据库知道每一次变更。
有些偏移不是整小时。印度是 +5:30,尼泊尔 +5:45,澳大利亚部分地区 +9:30,纽芬兰 −3:30,查塔姆群岛 +12:45。页面用分钟而不是小时计算偏移,所以这些都不会被四舍五入掉。