时间工具

10 位和 13 位时间戳有什么区别?

解释 10 位秒级时间戳和 13 位毫秒级时间戳的区别,附接口、数据库和前端场景里的判断方法。

打开时间戳转换工具

核心区别是精度不同

10 位时间戳通常表示秒,13 位时间戳通常表示毫秒。两者都以 1970-01-01 00:00:00 UTC 为起点,只是记录的最小单位不同。

前端 JavaScript 的 Date 常用毫秒,很多后端接口、数据库字段和日志系统则可能使用秒。接口联调时,如果把 10 位秒级时间戳当毫秒用,日期会落到 1970 年附近;如果把 13 位毫秒当秒用,日期会跑到非常遥远的未来。

  • 10 位示例:1717200000,常见于 PHP、Unix 命令和部分服务端接口。
  • 13 位示例:1717200000000,常见于 JavaScript Date.now() 和前端日志。
  • 秒转毫秒:乘以 1000;毫秒转秒:除以 1000 并取整。

接口排查怎么判断单位

最简单的方法是看数字长度,再转换为北京时间确认是否合理。如果一个字段叫 created_at、expired_at、updated_at,转换后应该落在业务发生日期附近。

还可以结合语言习惯判断:Java 的 System.currentTimeMillis 是毫秒;Python time.time 返回秒,但可能带小数;JavaScript Date.now 返回毫秒。

数据库和日志里的常见坑

同一个系统里最好统一时间单位,并在字段名或接口文档里写清楚。例如 expireAtMs、createdAtSeconds 这类命名能减少误用。

如果需要展示给用户,时间戳还要结合时区。中国用户看到的一般是北京时间,即 UTC+8。

常见问题

13 位时间戳能直接除以 1000 吗?

可以。通常除以 1000 后取整就是对应的秒级时间戳。

为什么转换后差 8 小时?

这是 UTC 和北京时间的时区差异。北京时间是 UTC+8,展示时需要按目标时区格式化。

时间戳一定是 10 位或 13 位吗?

不是。早期或未来日期位数可能变化,也可能出现带小数的秒级时间戳。判断时要结合字段含义。

🛠️ 更多实用工具: JSON格式化 YAML↔JSON XML↔JSON Base64编解码 URL编码 JWT解析 MD5/SHA加密 UUID生成 二维码生成 正则测试 文本Diff 时间戳转换 SQL格式化 Mock数据 图片压缩 图片Base64 颜色转换
📚 热门教程: JSON 格式化报错 时间戳秒/毫秒区别 Base64 中文乱码 URL 空格编码区别 图片压缩到 200KB 手机号邮箱正则 JWT 过期时间 MD5/SHA256 区别 全部教程