You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman前置请求脚本JS获取当前日期减3个月报错求助

解决Postman前置请求脚本中日期计算的TypeError问题

你碰到的这个错误根源很明确:Date()不带new关键字调用时,返回的是一个字符串,而不是Date对象。字符串类型根本没有setMonth()、getMonth()这些Date对象专属的方法,所以才会抛出TypeError。

正确的代码写法

要创建真正的Date实例,必须用new Date(),这样才能调用日期处理方法。这里给你两种可行的写法:

写法1:直接修改原日期对象

// 创建当前时间的Date对象实例
var startDate = new Date();
// 将月份减3,方法会自动处理跨年/跨月的边界情况(比如1月减3个月会变成去年10月)
startDate.setMonth(startDate.getMonth() - 3);

// 可选:将日期转换成YYYY-MM-DD格式,并存入环境变量供请求使用
var formattedStartDate = startDate.toISOString().split('T')[0];
pm.environment.set("startDate", formattedStartDate);

写法2:保留原日期,修改复制后的对象

如果你不想改变原当前日期的对象,可以先复制一个新的Date实例再修改:

var currentDate = new Date();
// 复制当前日期的新实例,避免修改原对象
var startDate = new Date(currentDate);
startDate.setMonth(currentDate.getMonth() - 3);

// 同样可以格式化并存入变量
pm.environment.set("startDate", startDate.toISOString().split('T')[0]);

补充说明

  • setMonth()方法会直接修改调用它的Date对象,所以如果需要保留原始的当前日期,一定要用复制实例的方式。
  • 方法会自动处理月份溢出的情况,比如当前是2024年1月(月份索引0),减3个月后会自动变成2023年10月(月份索引9),无需额外处理跨年逻辑。

内容的提问来源于stack exchange,提问作者user117499

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:07:46