Unix 时间戳:毁掉日期的四个陷阱
Unix 时间戳就是从 1970-01-01 UTC 起算的秒数。简单——但时间戳制造的日期 bug 比任何其他格式都多。四个陷阱解释了大部分。
1. 秒与毫秒
JavaScript 的 Date.now() 返回毫秒;经典 Unix 时间和多数后端日志用秒。10 位数字是秒,13 位是毫秒。混用会把 2026 年变成公元 53000 年——或者 1970 年。
2. UTC 与本地时
时间戳本身没有时区——它在任何地方都是同一瞬间。bug 出在:代码用服务器时区而不是用户时区去转换;或者解析 2026-09-01 08:00 这种字符串时没说明它属于哪个时区。
3. 夏令时跳变
有夏令时的时区一年跳两次。一场会议如果存的是夏令时和冬天各自的本地 09:00,对应的是两个不同的 UTC 瞬间;存 UTC、展示时才转本地时间,能消灭这一整类 bug。
4. 按地区猜测解析
03/04/2026 在一个国家是 3 月 4 日,在另一个国家是 4 月 3 日。从文本解析日期必须显式指定格式——永远不要猜。
实用守则:存 UTC、只在展示时转换、格式永远写明。想检查一个时间戳或日期字符串,用时间戳转换工具或世界时钟并排对比——都在浏览器本地运行。