中文开发者指南
Unix 时间戳:秒和毫秒为什么经常搞错?
解释 10 位秒级时间戳和 13 位毫秒级时间戳的区别,以及日志、API、数据库中常见的时区判断方式。
核心要点
先判断时间戳单位,再判断时区。10 位通常是秒,13 位通常是毫秒,但生产系统仍要以接口文档和数据源为准。
建议先用脱敏样例理解概念,再把结论带回自己的接口、日志或配置环境中验证。工具输出可以帮助定位问题,但不应替代服务端校验、安全审查或项目上下文判断。
使用前检查
在相关工具里操作前
- 先确认输入是否为脱敏样例,而不是生产密钥、Token、客户数据或密码。
- 先理解字段单位、编码格式或安全边界,再把结果用于接口联调。
- 需要安全判断时,把最终校验放在可信服务端,而不是只依赖浏览器端显示。
1
先判断单位
Unix 时间戳常见两种单位:秒和毫秒。秒级值通常是 10 位,毫秒级值通常是 13 位。把毫秒当秒会得到很远的未来日期,把秒当毫秒会得到 1970 年附近的时间。
调试 API、日志和数据库时,不要只看数字大小。应该确认数据源说明、字段命名和同一系统里的其他时间字段。
2
UTC 与本地时间
Unix 时间戳本身表示一个绝对时间点,转换成人类可读日期时才会显示 UTC 或本地时区。
跨地区排查问题时,建议同时记录 UTC 和本地时间,避免把时区差异误判为接口错误。
- 日志排查:优先保留 UTC。
- 用户展示:按用户本地时区显示。
- 接口对接:确认单位和时区约定。
3
安全建议
时间戳转换工具适合调试和阅读示例值,不应该作为权限判断的来源。
JWT 的 exp、nbf、iat 等字段必须由服务端验签和校验,浏览器端转换只能帮助理解。