Unix 时间戳与 UTC
什么是 Unix epoch、秒/毫秒时间戳,以及开发者与普通人如何与本地时间互转。
Unix 时间戳是从 1970-01-01 00:00:00 **UTC** 起经过的秒数(或毫秒数)。它不含时区信息——同一 timestamp 在全球指向同一瞬间,显示为本地时间则因地区而异。服务器日志、API 和数据库常用此格式。
秒与毫秒
- Unix 秒:10 位数字,如 1700000000
- JavaScript Date:毫秒,13 位,如 1700000000000
- 混淆两者会导致时间差 1000 倍——开发中常见 bug
- 2038 年问题:32 位系统秒级上限曾引发关注,现代系统多用 64 位
与本地时间的关系
Timestamp → 本地时间:软件用 IANA 时区规则转换。本地时间 → timestamp:必须先确定 IANA 时区与 DST 状态,再换算为 UTC instant。这与 UTC 基础 概念一致。普通用户若看到日志中的 UTC 时间,可用 转换 转为所在国时间。
实用提示
- 存储与传输用 UTC/timestamp;展示层再本地化
- 永远不要用「服务器本地时区」存储不带时区的时间字符串
- 跨团队约定:API 文档写明秒还是毫秒
- 时区规则见 IANA 时区数据库是什么