Unix 时间戳是什么?怎么转换成日期时间

一串看不出含义的数字 1735689600 是一个合法的时间,1735689600000 也是。两者含义相差 1000 倍,肉眼看不出区别——这正是最容易踩的第一个坑。 它们都是 Unix 时间戳:从 1970-01-01T00:00:00Z(纪元时间)起经过的时间。数据库存它、接口返回它、日志里全是它,但人脑读不了它。 秒还是毫秒? 知道规则就很简单: 位数 单位 大致对应 10 位 秒 2001 → 2286 年 13 位 毫秒 同样日期,数值 ×1000 JavaScript 的 Date.now() 返回毫秒,而多数后端语言和 Unix 命令返回秒。这个不匹配是经典 bug:毫秒值除以 1000 会得到 1970 年附近的日期,秒值当成毫秒用同样会落到 1970 年。 Unix 时间戳转换工具 会自动识别位数,两种都显示。 为什么转换出来"不对":时区 时间戳本身没有时区,它表示一个绝对时刻;是渲染方式带了时区。 2026-01-01T00:00:00Z(UTC)在北京是 2026-01-01 08:00:00 在纽约是 2025-12-31 19:00:00 所以当时间戳"显示成了前一天",问题几乎总是:少写了 Z、缺了时区偏移,或者服务端按本地时间格式化而客户端按 UTC 理解。 转换工具会把 ISO 8601(UTC) 和 本地时间 两行并排显示,差异一眼可见。 实际使用中的几个场景 数据库:存 UTC,按用户时区渲染。存本地时间是少数几个很难挽回的日期决策之一。 日志:请求旁边那个 10 位数字,基本都是秒级 epoch 时间。 接口:看字段名——created_at、createdAt、timestamp 常常是 epoch 值,但单位不能靠猜,看位数。 ...

September 12, 2026 · 1 min · 153 words · NavProject Team