Postman传时间戳最简单用{{$timestamp}},但它是秒级,需确认后端要求毫秒还是秒;毫秒级推荐Pre-request Script执行Date.now()存环境变量,JSON中嵌入时勿加引号。

Postman 传时间戳最简单的方式是直接用内置变量 {{$timestamp}},但要注意它默认是秒级、不带毫秒——很多后端接口实际要的是毫秒级,硬套会返回 400 或签名失败。
用 {{$timestamp}} 必须确认后端要的是秒还是毫秒
Postman 内置的 {{$timestamp}} 是 Unix 秒级时间戳(如 1730771160),不是毫秒。如果你的接口文档写的是“时间戳(毫秒)”或校验逻辑里拼了 customerCode + timestamp + ytoken 这类字符串再 MD5,那直接填 {{$timestamp}} 几乎必错。
- 秒级时间戳:适合多数 OAuth2、JWT exp 字段、简单过期判断
- 毫秒级时间戳:常见于金融类接口、自定义签名、Elasticsearch 时间字段、部分国产 SDK
- 验证方法:在 Postman 的
Tests里加一行console.log(pm.variables.get("$timestamp")),看输出是 10 位还是 13 位数字
Pre-request Script 生成毫秒时间戳并存为环境变量
这是最可控的做法,尤其当你需要和其它参数(比如 customerCode)一起参与加密计算时。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 打开请求的
Pre-request Script标签页 - 写入:
const timestamp = Date.now();<br>pm.environment.set("timestamp", timestamp); - 在 URL、Header 或 Body 中引用:
{{timestamp}} - 如果同时需要秒级(比如日志标记),可额外存一份:
pm.environment.set("timestamp_s", Math.floor(timestamp / 1000));
JSON Body 中嵌入时间戳要注意引号和类型
JSON 要求数值不加引号,但很多人误把 {{timestamp}} 放进双引号里,结果发出去变成字符串 "{{timestamp}}",后端解析成 string 类型直接报错。
- 正确写法(raw → JSON):
{<br> "event": "login",<br> "ts": {{timestamp}}<br>} - 错误写法:
"ts": "{{timestamp}}"—— 这会让ts成为字符串,不是 number - 如果后端强制要求字符串格式时间戳(少见),才用
"ts": "{{timestamp}}",但必须文档明确说明
时区不对导致时间戳偏差一整天
new Date("2026-11-05") 在中国本地环境会解析成 2026-11-05T00:00:00+0800,转毫秒后对应 UTC 时间是前一日 16:00。后端若按 UTC 解析,就会差 8 小时。
- 保险做法:用 ISO 8601 UTC 格式构造日期,例如
new Date("2026-11-05T00:00:00Z").getTime() - 更推荐:直接用
Date.now(),它返回的是 UTC 毫秒数,不依赖本地时区 - 如果必须用某天零点(业务含义上的“今天”),建议后端统一按 YYYY-MM-DD 字符串接收,而非强求时间戳
真正容易被忽略的不是“怎么生成”,而是“谁在用这个时间戳”。签名逻辑、缓存 key、幂等 id、数据库写入时间——每个地方对精度、时区、单位的要求都可能不同。别只测一个成功响应,拿几个不同时刻的时间戳手动改一改,看后端是否真按你理解的方式用了它。

















