作者:kaenfsk · 最后复核:2026 年 10 月 12 日 · 数据在浏览器本地处理 · 内容与维护标准
⏰ 时间戳转换
Unix 时间戳与北京时间互转,支持秒级和毫秒级时间戳。
输入按 UTC+8 解析,输出同时给出秒级和毫秒级结果。
关于时间戳转换
Unix 时间戳(Unix Timestamp)是计算机系统中表示时间的一种标准方式,定义为从 UTC 时间 1970 年 1 月 1 日 00:00:00(也称为 Unix Epoch)开始经过的秒数(10 位)或毫秒数(13 位)。时间戳本身不包含时区信息,是一个绝对值,在任何时区都代表同一个瞬间。
时间戳在编程中广泛使用,因为它是跨语言、跨平台的通用时间表示法。无论是 Python 的 time.time()、JavaScript 的 Date.now()、还是 MySQL 的 UNIX_TIMESTAMP(),都返回时间戳。相比日期字符串,时间戳便于计算和比较,不存在时区解析和格式转换的麻烦。
使用说明
- 当前时间戳 — 页面自动显示当前秒级(10 位)和毫秒级(13 位)时间戳,点击「刷新」可获取最新值
- 时间戳转日期 — 输入时间戳数字,点击转换即可查看对应的北京时间(UTC+8)
- 日期转时间戳 — 输入日期时间字符串,转换为对应的秒级和毫秒级时间戳
常见应用场景
- API 调试 — 接口返回的时间通常是时间戳格式,转换后可直观确认时间的正确性
- 数据库查询 — 在 SQL 中以时间戳范围查询数据记录,需要将日期转换为时间戳
- 日志分析 — 分析系统日志中的时间戳字段,定位特定时间段的异常事件
- 前后端协作 — 确认前后端使用的时间戳精度一致(秒级还是毫秒级)
常见问题
Q: 秒级和毫秒级时间戳怎么区分?
秒级是 10 位数字(如 1719212345),毫秒级是 13 位数字(如 1719212345000)。本工具会自动根据输入长度判断,无需手动选择。
Q: 时间戳有没有时区问题?
时间戳本身是 UTC 时间,没有时区。转换为可读日期时,本工具默认显示北京时间(UTC+8)。如果服务器在其它时区,转换结果会不同。
10 位还是 13 位,先学会判断
Unix 时间戳按单位分为秒级与毫秒级:秒级时间戳通常为 10 位,毫秒级通常为 13 位。2026 年左右的当前时间大约是秒级 17 亿,也就是 10 位;如果看到 13 位数字,通常是毫秒级。判断时也可以看末三位是否长期为 000,但不绝对,最好以接口文档为准。工具支持自动识别,粘贴后直接转换,不需要手动补零或除以 1000。
一个完整转换流程
- 从数据库、日志、接口或浏览器控制台取得时间戳
- 把时间戳粘贴到输入框,先确认显示的是秒还是毫秒
- 查看对应的北京时间,与业务发生时间比对
- 需要精确到秒或毫秒时,复制对应格式的结果
- 反向操作时输入目标日期,得到时间戳后直接用于代码或 SQL
时区问题的核心
时间戳本身没有时区,它表示从 Unix 纪元到某个时刻经过的秒数。同一时间戳在北京、东京和伦敦显示的时间不同,但代表的物理时刻相同。中国标准时间是 UTC+8,因此使用北京时间显示时,会比 UTC 表示快 8 小时。存储与接口应统一使用 UTC 时间戳,只在用户界面展示时转换成当地时区。
常见应用场景
- 调试登录令牌:检查过期时间戳是否大于当前时间戳
- 数据库范围查询:把开始与结束时间转换成时间戳,再执行 SQL
- 缓存过期:为 Redis、CDN 等配置准确的秒级 TTL
- 日志分析:将 UTC 时间戳转为北京时间,定位线上问题
- 前端倒计时:把服务器时间戳与本地时间相减,计算剩余秒数
开发中的最佳实践
- 接口文档明确所有时间戳字段的单位,推荐秒级或毫秒级二选一
- 不要在客户端和服务端混用不同精度,避免时间相差 1000 倍
- 比较时间使用时间戳,展示时间使用格式化日期
- 存储日期时间时考虑是否需要 1970 年以前的日期,避免负数时间戳被截断
排查时间相关 Bug
发现时间比预期快 8 小时,通常是显示层把 UTC 当成北京时间;发现相差约 1000 倍,通常是秒级与毫秒级混用;发现时间永远是 1970 年附近,通常是取到了 0 值或字段没有正确写入。先统一时间单位,再用本工具把可疑时间戳转换成北京时间核对,通常能快速定位问题环节。
北京时间与时间戳的完整对照
例如北京时间 2026-10-12 15:30:00(UTC+8),对应秒级时间戳 1791790200,毫秒级时间戳 1791790200000。反向转换时,把 1791790200 按秒解析并显示为北京时间,应得到同一个时刻。这正是双向工具的价值:既能从日志找发生时间,也能把已知时间变成可写入接口或 SQL 的参数。
| 任务 | 输入 | 输出 | 注意点 |
|---|---|---|---|
| 日志时间定位 | 秒级时间戳 | 北京时间 | 接口与日志可能混用 UTC 和本地时间 |
| 数据库查询 | 开始/结束日期 | 秒级边界 | 结束时间边界要按业务采用开区间或闭区间 |
| 令牌过期检查 | exp | 可读过期时刻 | 同时确认服务器时钟和时区配置 |
| 缓存 TTL | 当前与过期时间 | 相差秒数 | 毫秒需先除以 1000 |
跨语言测试时固定哪些变量
调用接口或入库前,至少固定四个变量:单位、时区、精度和边界。单位指秒或毫秒;时区指输入是否按 UTC 解析;精度指是否保留毫秒;边界指查询区间是否包含起止时间。用同一组样例分别在公司前端、服务端和数据库执行一次,才能发现“本地看着正确、线上多八小时或少一天”的问题。
常见疑问速答
时间戳 0 代表什么?代表 1970 年 1 月 1 日 00:00:00 UTC,也就是 Unix 纪元。数据库或接口中出现大量 0,通常表示字段没有正确写入。
时间戳有负数吗?有。1970 年以前的时间用负数表示,但部分系统或语言只支持无符号整数,处理历史日期时需要单独测试。
北京时间与 UTC 相差多久?中国标准时间是 UTC+8。把 UTC 时间加上 8 小时就是北京时间,因此数据库里看到的时间比预期慢 8 小时时,通常只是显示时区问题。
怎么确认接口返回的是秒还是毫秒?优先看接口文档;没有文档时,可以把它转换后与当前时间比较,如果结果差约 1000 倍,说明精度不一致。
快速记忆要点
时间戳的三个关键点可以简单记为:10 位看秒,13 位看毫秒;存储用 UTC,展示用本地;比较用数字,阅读用日期。遇到时间相关 Bug 时,先统一精度,再统一时区,最后看数据来源。本工具支持秒级与毫秒级自动识别,也支持北京时间双向转换,适合在联调、排障和生成测试数据时使用。
如果你需要在代码中生成当前时间戳,也可以参考常见写法:JavaScript 的 Date.now() 返回毫秒,除以 1000 并取整得到秒;Python 的 time.time() 返回浮点秒;Java 的 System.currentTimeMillis() 返回毫秒。无论哪种语言,传输与存储前都应明确单位。
除了转换,也可以把当前秒级与毫秒级时间戳作为测试数据保存。生成接口参数、缓存键或日志字段时,直接复制结果即可,避免在代码里临时拼错单位。