印度为什么比 UTC 偏了半小时
· 约 1 分钟
印度采用 UTC+05:30,是因为它把两个备选时区的差额对半分了。尼泊尔采用 UTC+05:45,部分原因是不想成为印度。每一个不寻常的偏移都有故事,而多数是政治。
关于印度标准时间,最显眼的问题是它为什么跟任何东西都不差整数小时。答案是:时区由政府决定,而政府并不为你那套日期库的方便去做优化。
印度:一个国家,两个自然时区,一次妥协
印度横跨约 29 个经度——西起古吉拉特,东至阿鲁纳恰尔邦。这大约相当于两小时的太阳时。按时区的常规逻辑,印度应该有两个。
在英国统治下,它实际上就是有两个。孟买时间与加尔各答时间各自独立,相差约 39 分钟,而马德拉斯时间作为铁路标准夹在两者之间。1947 年独立之后印度统一计时,选定了 UTC+05:30 这一单一时区——东经 82.5°,那条从米尔扎布尔附近穿过的经线,几乎正好落在两个旧标准中间。
理由是国家统一与行政简便,而代价是实实在在的。夏天,阿鲁纳恰尔邦的日出在 04:00 前后、日落在 16:00 前后,办公室却按照为德里定下的时间作息。阿萨姆的茶业一个多世纪以来一直沿用提前一小时的非官方「巴甘时间」,正是因为全国统一的钟点对不上。设立第二个印度时区的提议每隔几年就冒出来一次,每次都以同样的理由被否掉。
尼泊尔:四十五分钟的主权
尼泊尔在 UTC+05:45。比印度早十五分钟,也是全世界唯一处在这个偏移上的时区。
地理上的说法是加乌里桑卡峰,加德满都以东的一座山,被当作全国的基准经线。政治上的说法是尼泊尔不是印度,而十五分钟是一种廉价而持久的表达方式。尼泊尔在 1986 年从 UTC+05:30 移到了 UTC+05:45。
两种说法都成立,当地人会依你提问的方式讲其中一种。实务上要紧的是:这个偏移精确而恒定——尼泊尔不实行夏令时——而大量软件因为把它四舍五入成 +05:30 或 +06:00 而算错。
查塔姆群岛:四十五分钟,还带夏令时
查塔姆群岛位于新西兰以东约 800 公里,冬季为 UTC+12:45,夏季为 UTC+13:45。那里住着约 600 人。
这个偏移大致合乎太阳:群岛在新西兰本土以东足够远,够得上多出的这 45 分钟。夏令时则承自新西兰,这使得该群岛成为地球上仅有的两个既有一刻钟量级偏移、又有季节性调整的地方之一。
豪勋爵岛:三十分钟的季节性调整
位于澳大利亚东部海面的豪勋爵岛,人口约 380 人,冬季为 UTC+10:30,夏季为 UTC+11:00。它拨动的幅度是三十分钟,而且是地球上唯一这么做的地方。
理由是节制。岛上希望夏令时与新南威尔士本土同步,但又觉得对这么小的地方来说整整一小时太过,于是在 1981 年把差额对半分。结果造就了全世界最好的日期处理测试样例:任何把 60 分钟夏令时跳变写死的库,在豪勋爵岛上是错的,在别处都是对的——也就是说,除非你专门写那一个用例,否则它会通过你写的每一个测试。
那些已经消失的
荷兰:UTC+00:19:32.13。 1909 年至 1937 年,荷兰采用阿姆斯特丹的地方平太阳时,精确到秒。1937 年被四舍五入为 +00:20,1940 年改用中欧时间而弃置。IANA 数据库至今仍保留着它,这也正是本站引擎把偏移按秒而非按分计算的原因——运行环境被问到 1920 年的某个荷兰日期时,答案就是那个数值,把它舍掉便是一句小小的谎言。
利比里亚:UTC-00:44:30。 直到 1972 年,利比里亚都比格林尼治晚 44 分 30 秒,是地球上最后一个偏移不是整分钟数的国家。
新加坡:五次变更。 新加坡先后处于 +06:55:25、+07:00、+07:20、+07:30、+09:00,如今是 +08:00。它其实位于足以支撑 +08:00 的那条经线以西,之所以留在那里,是为了与 1982 年改动的马来西亚保持一致。
共同的模式
这些偏移没有一个是关于太阳的。印度对半分了一处政治分歧。尼泊尔宣示了独立。新加坡跟随了贸易伙伴。豪勋爵岛与自己做了妥协。
这正是本站每一个页面之下那条设计决定的理由:永远不要从经度推算偏移,也永远不要把偏移存进一张由你自己维护的表里。 去问 IANA 数据库,它记录着每个政府实际做出的决定,包括那些在天文上毫无道理的决定——因为你的用户正生活在那些决定里。
朝鲜那三十分钟的表态
2015 年 8 月,朝鲜把时钟拨慢 30 分钟,从 UTC+09:00 改为 UTC+08:30,并把结果命名为平壤时间。宣称的理由是撤销日据时期强加的一项变更,那项变更曾使朝鲜半岛与东京对齐。
实际效果是:自 1961 年起共用同一钟点的朝鲜与韩国,从此相差 30 分钟。
2018 年 5 月,板门店朝韩首脑会晤之后,朝鲜改回 UTC+09:00。公告称这是迈向统一的第一个实际步骤;会谈期间,和平之家的时钟一直并排显示着两个时间。
相隔三年的两次 tzdata 发布,为的是一项与太阳毫无关系、与政治关系全部的变更。这是常态,而非例外。
委内瑞拉的半小时,以及它的回撤
2007 年 12 月,委内瑞拉从 UTC-04:00 改为 UTC-04:30,政府把这半小时的挪动说成是让孩子上学路上多些日光。2016 年 5 月又改了回去,这一次被表述为严重电力危机期间的节能举措。
在一个不寻常的偏移上待了九年,然后回头。任何把委内瑞拉的偏移写成常量的系统,都得改两次。
给所有要存储时间的人的教训
这些并不是「罕见」意义上的边缘情况。综合起来,本篇已经讲到尼泊尔、萨摩亚、托克劳、朝鲜、委内瑞拉、土耳其、俄罗斯、伊朗、墨西哥、巴西和埃及的偏移变更——全部发生在活着的人的记忆之内,多数就在最近二十年。
IANA 数据库在一次发布里就把它们逐一吸收进去。写死的表一个也吸收不了,而且是无声地出错,出错的样子看起来像是某个人排期失误,而不像是软件的缺陷。