如何转换 Unix 时间戳
输入数字 Epoch 或带时区的完整 ISO 日期时间。已知单位时应选择显式模式;自动模式按常见数量级判断秒或毫秒,并把识别结果清楚展示出来。
- 选择自动、秒、毫秒或 ISO;ISO 必须包含完整时间和 Z 或数字偏移。
- 数字输入不要包含千位分隔符和单位后缀;秒允许小数。
- 转换后比较 UTC ISO、本地显示、Unix 秒和 Unix 毫秒。
- 用于日志、数据库或定时任务前,确认浏览器时区和识别单位。
案例与预期行为
| 输入 | 输出 | 说明 |
|---|---|---|
0 秒 |
1970-01-01T00:00:00.000Z |
Unix Epoch 从 1970 年 1 月 1 日 UTC 零点开始。 |
1704067200 秒 |
2024-01-01T00:00:00.000Z |
常见 10 位现代值在自动模式下识别为秒。 |
1704067200000 毫秒 |
2024-01-01T00:00:00.000Z |
对应的 13 位值表示毫秒。 |
2024-01-01T08:00:00+08:00 |
2024-01-01T00:00:00.000Z |
先应用 +08:00 偏移,再显示 UTC。 |
-1 秒 |
1969-12-31T23:59:59.000Z |
负时间戳表示 Epoch 之前的时刻。 |
2024-02-30T00:00:00Z |
无效 ISO 日期 |
严格校验会拒绝被 JavaScript 自动归一化的不存在日期。 |
秒、毫秒与自动识别
Unix 时间戳表示从 1970-01-01T00:00:00Z 起经过的时间。许多系统存储秒,而 JavaScript Date 和大量 Web API 使用毫秒。单位混淆会造成 1000 倍偏差,因此知道来源契约时,显式选择秒或毫秒最可靠。
自动模式采用实用阈值:绝对值达到 100,000,000,000 时按毫秒,否则按秒。对现代常见日期通常有效,但无法对遥远日期或特殊业务数值保证意图。结果会显示识别模式,不能只凭位数盲目信任。
- 现代 10 位 Epoch 通常是秒。
- 现代 13 位 Epoch 通常是毫秒。
- 在 JavaScript Date 范围内支持负值。
ISO 输入与严格日历校验
ISO 模式要求完整日期、时间、秒以及 Z 或 +08:00 这样的数字时区偏移。强制时区可避免无时区字符串在不同设备上被当作本地时间。支持 1 到 3 位小数秒,并统一到毫秒。
工具不仅依赖 Date.parse,还会回查年月日时分秒。2024-02-30、25 点或非法偏移会直接拒绝,不会静默滚动成另一个时刻。该行为有利于在写入数据库和调度器前发现输入错误。
- Z 表示 UTC。
- 已知本地偏移时使用 +HH:MM 或 -HH:MM。
- EST、CST 等缩写有歧义,因此不接受。
UTC、本地时间与时区
ISO 结果始终是 UTC,并以 Z 结尾。本地结果使用浏览器当前语言和 IANA 时区格式化,例如 Asia/Shanghai 或 America/New_York。夏令时规则来自浏览器和操作系统,因此同一 Epoch 在不同地区显示不同钟表时间,但代表同一时刻。
数字偏移只描述某个时刻,而 IANA 时区包含历史和未来夏令时规则。本页展示当前浏览器时区,不模拟任意命名时区。跨地区调度通常应存 UTC 时刻,并在未来墙上时间有意义时另外保存 IANA 时区。
- 日志和 API 比较优先使用 UTC。
- 本地格式适合人读,不适合作为可移植存储。
- 远程桌面或出差设备上要检查显示时区。
范围、精度与闰秒限制
JavaScript Date 支持的毫秒绝对值约不超过 8.64×10^15,超出会拒绝。数值使用 JavaScript Number,极大或高精度小数可能在到达 Date 前损失精度。输入小数毫秒时,输出也可能不是整数。
常见 Unix 时间和 JavaScript Date 不表示 23:59:60 闰秒。本页遵循平台行为,不适合天文或单调时钟需求。普通 Web API、日志和数据库中,UTC ISO、秒和毫秒是主要互操作形式。
- 数字中不能带逗号或 ms 等文字。
- NaN 和 Infinity 无效。
- JavaScript Date 不表示闰秒。
常见用途与排查方法
适合阅读数据库字段、浏览器日志、JWT 声明、分析事件、Webhook 和调度记录。可以判断值是秒还是毫秒、事件是否落在预期时区,以及客户端是否发送了过期或未来时间。
排查时先确认文档单位,再用显式模式转换。跨系统先比较 UTC,再比较本地显示。差几个小时通常是时区问题;差几十年或上千年通常是秒毫秒混淆。事故记录中应保留原始值。
- 查看 Token 中的 iat、exp、nbf。
- 把日志 Epoch 转成人类时间线。
- 核对数据库秒列与毫秒列迁移。
- 签名含时间戳时保留原始签名字符串。
错误与能力边界
空输入、格式错误数字、无效 ISO、不存在日期和超范围值会分别提示。数字模式不接受空格、逗号和单位后缀;ISO 不接受仅日期或无时区本地时间,避免环境相关解析。
本页一次转换一个时刻,不解析 duration、cron、明天等自然语言、Excel 序列日期或 GPS 时间,也不计算工作日。涉及循环计划和夏令时跳变时应使用时区感知调度库。
- 有效时间戳不代表事件来源可信。
- 自动识别只是便利,不是 Schema。
- API 和数据库字段名应注明单位。
与 UUID 和哈希工具的区别
时间戳表示发生时间,通常可预测,不应当作唯一密钥或随机 Token。UUID v4 提供随机标识空间,哈希是数据的确定性摘要。把时间戳与弱随机拼接也不会自动变成安全标识。
时间排序用时间戳,分布式标识用 UUID,消息认证则用 HMAC。协议签名时间戳时,可复制一份转换供人阅读,但验签必须保留原始文本,因为格式和单位变化会改变被认证字节。