秒与毫秒
1777118400
1777118400000
如果第一个按秒解读、第二个按毫秒解读,这两个值表示的是同一时刻。把两者搞混,是最常见的时间戳 bug。
在 Unix 时间戳、ISO 8601、UTC 和本地时间之间转换。
最后更新
Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。
Unix 时间戳转换器把纪元时间(epoch time,一个代表历史上某一时刻的数字)转换成人能读懂的日期,也能把日期转换回时间戳。开发者到处都会遇到时间戳:数据库字段、日志行、API 响应、分析事件、JWT 的 exp 声明、定时任务触发器,以及缓存过期响应头。
核心思路很简单:计算机把时间存成一个数字(从 1970-01-01 00:00:00 UTC 起经过的秒数或毫秒数),但人需要日历、时区和可读的格式。在两者之间转换,是任何网页或移动应用中最常见的调试任务之一。
最容易搞混的是单位。POSIX 和大多数后端语言用秒。JavaScript、Java 和很多消息队列用毫秒。有些监控系统用微秒或纳秒。10 位数字几乎一定是秒,13 位数字几乎一定是毫秒。
1970-01-01 00:00:00 UTC)起经过的秒数或毫秒数来计量时间。2026-04-25T12:00:00Z)是一种通用的文本格式。末尾的 Z(或 +00:00)表示 UTC;像 +02:00 这样的偏移量表示比 UTC 快 2 小时的本地时间。2026-04-25T12:00:00Z 和 2026-04-25T14:00:00+02:00)。粘贴一个数字(秒或毫秒)或者一个日期字符串。转换器会根据长度和格式自动识别。
如果自动识别猜错了,就手动切换秒和毫秒:10 位数字是秒,13 位数字是毫秒。
输出会显示 UTC 的 ISO 8601 格式、你的本地时间,以及易读的相对时间描述(3 hours ago、in 2 days)。
直接复制时间戳、ISO 字符串或本地时间。填写 JWT 的 exp、数据库记录或日志查询时很方便。
在代码中处理日期和时间时最常见的格式。IETF 还把 ISO 8601 规范化为 RFC 3339,用于各种协议。
| 格式 | 示例 | 常见于 |
|---|---|---|
| Unix 秒 | 1777118400 | 后端日志、JWT exp、POSIX time()、Redis |
| Unix 毫秒 | 1777118400000 | JavaScript Date.now()、Java System.currentTimeMillis() |
| ISO 8601 UTC | 2026-04-25T12:00:00Z | REST API、JSON、GraphQL、日志文件 |
| 带偏移量的 ISO 8601 | 2026-04-25T14:00:00+02:00 | 面向用户的日程安排、日历邀请 |
| RFC 2822 | Sat, 25 Apr 2026 12:00:00 GMT | 邮件头、HTTP Date 和 Last-Modified |
| 仅日期 | 2026-04-25 | 生日、节假日,不涉及时区 |
1777118400
1777118400000
如果第一个按秒解读、第二个按毫秒解读,这两个值表示的是同一时刻。把两者搞混,是最常见的时间戳 bug。
{ "id": 42, "createdAt": 1777118400, "expiresAt": 1777204800}在判断某个值是过去还是将来之前,先把它转换一下。大多数 JSON API 使用 Unix 秒,但一定要查看文档:大量使用 JavaScript 的后端经常输出毫秒。
2026-04-25T12:00:00Z
2026-04-25T14:00:00+02:00
这两个字符串表示的是同一个瞬间。存储时刻时始终使用 UTC,只在显示时才格式化成本地时间。
1700000000 按秒解读是 2023 年 11 月,按毫秒解读却是 1970 年 1 月。'2026-04-25'),而不是比较时间戳。两个有效的 ISO 字符串可能用不同格式表示同一时刻。1970-01-01 00:00:00 UTC 起经过的秒数(或毫秒数)。它是一个代表特定时刻的数字,与任何时区无关。Date.now() 返回毫秒,大多数后端返回秒。UTC 是协调世界时(Coordinated Universal Time)的缩写。它是全球标准的时间参照,不实行夏令时。大多数数据库、API 和日志都应该用 UTC 存储时间。
Date 对象把时间戳存储为自 Unix 纪元起的毫秒数,Date.now() 和 new Date().getTime() 返回的就是这个值。它比秒更精确,但在和其他语言对接时,经常导致相差 1000 倍的 bug。new Date(...);在 Python 中,用 datetime.fromtimestamp(...)。或者直接粘贴到 Unix 时间戳转换器里,一键得到结果。2038-01-19 溢出,也就是所谓的 2038 年问题。现代语言和数据库把时间戳存储为 64 位整数,安全范围延长到了几千亿年。