Postman中需用Pre-request Script执行pm.variables.set()设置日期变量,再在表单中以{{var_name}}引用;必须注意变量作用域、时区对齐(推荐本地日期格式化而非toISOString)及form-data与x-www-form-urlencoded的编码差异。

Postman 中用 pm.variables.set() 动态写入当前日期
Postman 本身不支持表单字段直接写表达式(比如 {{now}}),但可以通过 Pre-request Script 注入变量,再在 Body 表单中引用。关键点是:必须用 pm.variables.set() 设置变量,且变量名要和表单字段名一致或显式引用。
常见错误是直接在表单值里写 {{moment().format('YYYY-MM-DD')}} —— 这不会执行,只会当纯文本发出去。
- 在请求的 Pre-request Script 标签页里写:
pm.variables.set("apply_date", new Date().toISOString().split('T')[0]); - 然后在 Body → form-data 或 x-www-form-urlencoded 中,Key 填
apply_date,Value 填{{apply_date}} - 如果日期格式要带时间(如
2024-05-20 14:30:00),改用:pm.variables.set("submit_time", new Date().toLocaleString('sv-SE').replace(',', ''));(sv-SE输出2024-05-20 14:30:00,无逗号)
form-data 和 x-www-form-urlencoded 对变量引用的支持差异
两者都支持 {{var_name}} 语法,但行为略有不同:x-www-form-urlencoded 会自动 URL 编码变量值;form-data 则不会对变量值做额外编码(除非值里含特殊字符,它才按 multipart 规则处理)。所以如果你需要发送 2024-05-20+14%3A30 这类已编码的时间字符串,建议用 x-www-form-urlencoded + 手动编码。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 推荐默认用 x-www-form-urlencoded:兼容性好,变量引用稳定,日期类纯 ASCII 值无需额外处理
- form-data 适合传文件或混合类型,但若表单字段名含空格或中文,
{{xxx}}可能被截断——此时应改用pm.variables.replaceIn()在脚本里拼完整键值对再 set - 注意:form-data 的 Key 如果是
user[created_at]这种带方括号的,变量引用仍有效,但需确保变量名合法(不能含[])
时区问题导致日期“错一天”的真实原因
很多人发现 new Date().toISOString().split('T')[0] 返回的是 UTC 时间,而自己本地是东八区,结果表单填了比预期早/晚一天的日期。这不是 Postman bug,而是 JS Date 对象默认按浏览器时区解析,但 toISOString() 强制转 UTC。
- 要获取本地日期(如中国用户想要
2024-05-20):const d = new Date(); const localDate = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`;pm.variables.set("today", localDate); - 若后端明确要求 UTC 日期(比如某些金融系统),那就保持
toISOString()方案,但得和后端对齐时区约定 - 别用
moment.js:Postman 现在默认不带 moment,加载外部库既慢又可能失败;原生Date完全够用
批量请求时每个请求日期不更新?检查 Pre-request Script 执行时机
用 Collection Runner 或 Newman 批量跑时,如果所有请求发的都是同一个日期,大概率是因为变量被设成了全局/环境变量,且只在第一个请求运行了一次。Postman 的 Pre-request Script 是每次请求前执行的,但前提是它没被缓存或写错位置。
- 确认脚本写在**单个请求**的 Pre-request Script 里,而不是 Collection 级别的(Collection 级脚本只在第一次运行时执行)
- 避免用
pm.environment.set()写环境变量后又在别处覆盖——优先用pm.variables.set()(局部变量,生命周期仅限当前请求) - 调试技巧:在脚本末尾加
console.log(pm.variables.get("today")),然后看 Postman Console(Ctrl+Alt+C)输出是否每次都不一样
Postman 表单日期生成真正卡住人的地方,从来不是“怎么写格式”,而是变量作用域没理清、时区没对齐、或者误以为 form-data 能像 JS 模板一样直接执行代码。把 pm.variables.set() 放对位置,用原生 Date 控制时区,就足够应付绝大多数业务场景。










