Postman不会自动解析响应中的日期字符串,需在Tests脚本中用new Date()显式解析并转为ISO或时间戳等格式,再存为环境变量供后续请求使用。

Postman 本身不自动转换响应里的日期字符串,必须手动解析再存为变量;否则直接引用 {{date}} 只是原样字符串,后端很可能解析失败。
在 Tests 脚本里用 new Date() 解析响应中的日期字符串
当接口返回 JSON 类似 {"createAt": "2026-11-04T08:30:15"},不能直接把 {{createAt}} 当时间戳或格式化时间用。必须先在 Tests 脚本中解析成 JavaScript Date 对象,再转成你需要的格式(如毫秒、ISO、自定义字符串)。
- 解析失败很常见:如果响应里是
"2026/11/04"或"2026-11-04 08:30"这类非标准格式,new Date()在不同浏览器/Node 版本下行为不一致,建议统一补全为 ISO 格式(比如拼上T00:00:00)再解析 - 时区陷阱:直接
new Date("2026-11-04")会被当成本地时区时间,实际传给后端可能变成 UTC 时间(如东八区会变成前一日 16:00 UTC),推荐用new Date("2026-11-04T00:00:00Z")显式声明 UTC - 示例脚本(存为环境变量供后续请求用):
const res = pm.response.json(); const dateStr = res.createAt || res.createdAt; // 补全为 ISO 并解析 const d = new Date(dateStr.includes('T') ? dateStr : `${dateStr}T00:00:00`); pm.environment.set("parsed_timestamp", d.getTime()); pm.environment.set("parsed_date_iso", d.toISOString().slice(0, 19));
需要时间戳就用 .getTime(),不是 .valueOf() 或 + 隐式转换
虽然 new Date().getTime()、+new Date()、(new Date()).valueOf() 都能拿到毫秒数,但 Postman 的沙箱环境对隐式类型转换支持不稳定 —— 尤其在旧版本或某些特殊时区下,+ 操作可能返回 NaN。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 务必显式调用
.getTime(),这是最安全、最可读的方式 - 如果后端要的是秒级时间戳(如 Unix timestamp),记得除以 1000 并
Math.floor(),别用parseInt()(会截断小数点后所有内容,但毫秒转秒是整除) - 错误写法:
pm.environment.set("ts_sec", parseInt(+new Date() / 1000))→+不稳定,parseInt多余 - 正确写法:
pm.environment.set("ts_sec", Math.floor(new Date().getTime() / 1000))
关联时避免把日期变量当字符串拼接进 URL 或 Body
如果你在下一个请求的 URL 参数里写 expireTime={{parsed_timestamp}},而 parsed_timestamp 是数字,Postman 会正常展开;但如果它是通过 JSON.stringify() 存的字符串(比如你误用了 JSON.stringify(d.getTime())),就会带引号传出去,后端收到的是 "1730724435000" 而不是 1730724435000,导致解析失败。
- 检查变量类型:在 Tests 里加一行
console.log(typeof pm.environment.get("parsed_timestamp")),确认是"number"而非"string" - Body 里用 raw + JSON 时,变量必须是合法 JSON 值:数字不用引号,字符串必须引号,布尔值不能加引号 —— 直接写
"expireTime": {{parsed_timestamp}}是错的,应该写"expireTime": {{parsed_timestamp}}(注意无引号)且确保变量本身是数字 - GET 参数无此限制,但值含空格或冒号时需
encodeURIComponent(),不过时间戳纯数字一般不用
最容易被忽略的一点:Postman 的变量展开发生在请求构造阶段,而 Tests 脚本执行在响应返回之后 —— 所以你永远不能在同一个请求里「用 Tests 脚本生成变量,再在当前请求的 Body/Params 里引用它」。所有依赖响应日期的参数,必须拆成两个请求:第一个取响应、解析、存变量;第二个才用这个变量。









