指南
12 — 时区究竟是怎么运作的——机制、来历,以及软件出错的那些具体方式。写来是让人读一遍就记住,不是为了排名。
时区究竟是怎么运作的
时区不是地球上的一道条带,而是一组有名字的规则,讲的是某个地方的钟曾经显示什么、正在显示什么、将要显示什么。这个区别就是全部主题。
UTC 究竟是什么,它和 GMT 差在哪里
UTC 不是时区。它是每个时区据以定义的参照标准,由大约 450 台原子钟共同维持,并且从不为夏令时挪动——系统之所以用它,原因正在于此。
夏令时为什么存在,又是谁废除了它
夏令时是为了在第一次世界大战中节省燃料而引入的,靠着每隔几十年就换一套的理由维持下来,如今随着支持它的证据日渐单薄,正被一个又一个国家放弃。
隔着十二小时安排会议
十二小时的落差没有好的会议时间,把网格涂上颜色也改不了。处理得好的团队会停止寻找,转而改变自己的工作方式。
那些不是整点小时的 UTC 偏移
全世界约五分之一的人生活在与 UTC 相差非整数小时的偏移上。假定并非如此的软件,对这些人不是稍微算错,而是错 30 或 45 分钟,这更糟。
2038 年问题,讲清楚
把时间存为有符号 32 位秒数的系统会在 2038 年 1 月耗尽范围并回卷到 1901 年 12 月。现代主流平台多年前已经解决,如今的风险集中在嵌入式设备、遗留系统和序列化数据里。
ISO 8601,以及怎样把日期写得毫无歧义
ISO 8601 之所以存在,是因为 03/04/2026 在美国是三月、在别处是四月。写成 2026-04-03 就消除了歧义,作为文本也能正确排序,而这正是每个接口都该接受的写法。
如何跨越多个时区开每日站会
站会之所以有效,是因为所有人同时醒着。一旦跨度超过大约六小时,这条前提就不成立了,而诚实的办法是换掉形式,而不是一直挪时间。
代码里的时区:一份实用指南
几乎所有时区缺陷都能追溯到四个错误之一。这里给出该怎么做,涵盖 JavaScript、Python、Java、Go 和 SQL,讲的是道理而不只是规则。
EST 为什么有歧义,以及该用什么代替
时区缩写是非正式的标签,既没有主管机构,也不保证唯一。IST 既是印度也是爱尔兰也是以色列;CST 既是美洲也是中国也是古巴。请改用 IANA 标识符。
国际日期变更线,以及它为什么会拐弯
国际日期变更线只是大致沿着 180° 经线——它绕开基里巴斯、俄罗斯和阿留申群岛,而且有国家出于贸易考虑把自己挪到了线的另一侧。
印度为什么比 UTC 偏了半小时
印度采用 UTC+05:30,是因为它把两个备选时区的差额对半分了。尼泊尔采用 UTC+05:45,部分原因是不想成为印度。每一个不寻常的偏移都有故事,而多数是政治。