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

如何在Office Scripts中正确为日期累加月份?TypeScript代码修复

修复TypeScript日期范围生成的问题

问题根源

  • 引用类型的坑:Date是引用类型,let addedDate = date只是复制了对象引用,两者指向同一个内存地址。调用setMonth会直接修改原date对象,导致后续循环的基准日期被篡改。
  • 增量逻辑错误:循环中用i作为月份增量,第一次加0个月(i=0)、第二次加1个月、第三次加2个月……最终日期递增的月份数越来越多,不符合“每次递增1个月”的预期。

修复方案

方案一:基于初始日期生成所有递增日期

每次从原始日期出发,创建新的Date实例来计算目标日期,完全避免修改原日期:

const date = new Date("7 December 2023");
const durVal = 10;
for (let i = 0; i < durVal; i++) {
  // 基于初始日期创建新实例,隔离引用
  const addedDate = new Date(date);
  // 累加i个月,生成第i+1个日期(i从0开始)
  addedDate.setMonth(addedDate.getMonth() + i);
  console.log(addedDate);
}

方案二:逐次递增1个月(连续日期场景)

如果需要生成连续的逐月日期,以上一次的日期为基准,每次创建新实例并加1个月:

const date = new Date("7 December 2023");
const durVal = 10;
let currentDate = new Date(date);
console.log(currentDate); // 输出初始日期
for (let i = 1; i < durVal; i++) {
  currentDate = new Date(currentDate); // 创建新实例,避免修改上一个日期
  currentDate.setMonth(currentDate.getMonth() + 1);
  console.log(currentDate);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:53:32