这个工具适合做什么
时间戳转换器可以把秒级时间戳、毫秒时间戳、ISO 8601、ISO 9075、本地时间字符串和 UTC 时间之间相互转换。它会优先根据输入长度和日期格式自动识别类型,适合接口联调、日志排查、数据库检查和跨语言开发场景。
本页的格式标签采用常见的 ISO 8601 和 ISO 9075 命名,但本地时间的显示结果仍然会受到当前运行环境时区的影响。
秒级和毫秒级时间戳怎么判断
| 常见长度 | 单位 | 示例 | 排查重点 |
|---|---|---|---|
| 10 位 | 秒 | 1704067200 | 多数 Unix timestamp 和后端日志使用秒,需要乘以 1000 才能交给 JavaScript Date。 |
| 13 位 | 毫秒 | 1704067200000 | JavaScript Date.now() 常见输出,误按秒处理会得到很远的未来日期。 |
| 16 位 | 微秒 | 1704067200000000 | 部分数据库或链路追踪系统使用,需要除以 1000 才接近毫秒。 |
| 19 位 | 纳秒 | 1704067200000000000 | Go、Rust、监控系统中可能出现,通常需要按目标系统缩放。 |
如果一个时间值转换后落在 1970 年附近或非常遥远的未来,优先检查是否把秒和毫秒混用了。
如果遇到 16 位微秒或 19 位纳秒时间戳,请先换算成秒或毫秒后再粘贴到转换器中。
UTC、本地时间和 ISO 格式对照
| 格式 | 示例 | 适合场景 |
|---|---|---|
| Unix 秒 | 1704067200 | 后端接口、命令行、数据库数字字段。 |
| Unix 毫秒 | 1704067200000 | 浏览器 JavaScript、前端埋点、Date.now()。 |
| ISO 8601 UTC | 2024-01-01T00:00:00.000Z | 跨时区传输和日志对齐,Z 表示 UTC。 |
| 本地时间 | 2024-01-01 08:00:00 | 面向用户展示,结果取决于当前设备时区。 |
- 接口传输建议使用 Unix 时间戳或带时区的 ISO 8601 字符串。
- 日志排查时先统一到 UTC,再比较前端、本地和服务器显示。
- 数据库字段如果没有记录时区,需要确认业务默认时区。
常见使用场景
- 确认后端返回的是秒级还是毫秒级时间戳。
- 把接口日志中的时间值还原为可读日期时间。
- 检查前后端之间是否存在时区偏差。
- 快速复制 ISO 8601、UTC 或本地格式到测试脚本和数据库语句中。
使用步骤
- 输入时间戳或日期字符串,工具会自动识别格式。
- 查看秒级、毫秒级、ISO 和 UTC 等多种结果。
- 如果需要交给其他系统,可直接复制对应输出。
示例
输入: 2024-01-01T00:00:00Z
时间戳(秒): 1704067200
时间戳(毫秒): 1704067200000
这类对照最适合排查“秒和毫秒混用”造成的接口异常。
代码示例
为了避免本地时区造成示例结果不一致,下面统一使用明确的 UTC 输入:
// JavaScript
Math.floor(Date.parse("2024-01-01T00:00:00Z") / 1000); // 1704067200
new Date(1704067200 * 1000).toISOString(); // 2024-01-01T00:00:00.000Z
Date.now(); // 当前毫秒级时间戳
# Python
from datetime import datetime, timezone
datetime.fromisoformat("2024-01-01T00:00:00+00:00").timestamp() # 1704067200.0
datetime.fromtimestamp(1704067200, tz=timezone.utc).isoformat() # 2024-01-01T00:00:00+00:00
int(datetime.now(timezone.utc).timestamp() * 1000) # 当前毫秒级时间戳
<?php
strtotime("2024-01-01T00:00:00Z"); // 1704067200
gmdate("c", 1704067200); // 2024-01-01T00:00:00+00:00
常见问题
10 位和 13 位时间戳有什么区别?
10 位通常表示秒级 Unix 时间戳,13 位通常表示毫秒级时间戳。很多接口出错就是因为把毫秒值按秒解释,或者反过来把秒值当成毫秒值。
为什么同一个时间在不同系统里显示不一样?
最常见原因是时区不同。一个 UTC 时间在本地环境里可能会显示为本地时区时间,因此排查问题时要先确认双方使用的是 UTC 还是本地时间。
时间戳本身包含时区吗?
不包含。Unix 时间戳表示从 1970-01-01 00:00:00 UTC 开始经过的时间,显示成本地日期时才会套用当前系统或业务指定的时区。
输入普通日期字符串时为什么会无效?
如果日期格式过于模糊、拼写错误,或缺少必要分隔符,解析就可能失败。优先使用标准格式,例如 ISO 8601,会更稳定。
空输入时为什么会直接显示当前时间?
这是为了方便快速查看当前时间对应的多种输出格式,适合调试时临时复制当前时间戳或标准时间字符串。
为什么 1704067200 在 JavaScript 里显示成 1970 年?
JavaScript Date 构造函数默认接收毫秒。如果把 10 位秒级时间戳直接传入,就会被当成 1970 年后的 17 亿毫秒。应先乘以 1000。