当前时间戳怎么获取?
解释当前秒级、毫秒级时间戳的获取方式,以及接口调试时如何判断单位。
打开时间戳转换工具当前时间戳有秒和毫秒两种常见单位
接口文档里写 timestamp 时,需要先确认是 10 位秒级时间戳,还是 13 位毫秒级时间戳。两者差 1000 倍,传错单位会导致签名过期、订单时间异常或日志时间不对。
JavaScript 的 Date.now() 返回毫秒;很多服务端接口习惯传秒。联调时可以把当前值转换成北京时间,确认是否接近当前时刻。
- 10 位通常是秒,例如 1760428800。
- 13 位通常是毫秒,例如 1760428800000。
- 秒转毫秒乘以 1000,毫秒转秒除以 1000。
为什么接口签名常常需要时间戳
很多开放接口会把 timestamp 放入签名串,用来限制请求有效期。如果客户端和服务器时间差太大,就可能出现签名无效或请求过期。
排查时可以先获取当前时间戳,再和服务器返回时间、日志时间做对比。
本地时区不影响时间戳本身
时间戳本身表示从 UTC 起点经过的秒数或毫秒数,不携带时区。只有展示成日期时间时,才会出现北京时间、UTC 时间等差异。
常见问题
当前时间戳会随时区变化吗?
不会。时间戳是绝对时间,时区只影响展示出来的日期。
接口传 timestamp 应该传秒还是毫秒?
以接口文档为准。没有说明时,看示例长度,10 位多为秒,13 位多为毫秒。
为什么时间戳转换后差 8 小时?
通常是 UTC 和北京时间的展示差异,北京时间是 UTC+8。