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

如何生成遵循日历规则、按指定增量递增的日期天数数组?

实现按固定增量生成跨月日期数组

下面分别用原生JavaScript Date 对象和DayJS两种方式实现你需要的功能,生成从指定起始日开始、每次递增5天的日期数字数组:

一、原生JavaScript实现

// 配置参数:起始日期(年, 月-1, 日)、增量天数、生成的元素数量
const startDate = new Date(2024, 0, 16); // 2024年1月16日,月份是0基索引
const incrementDays = 5;
const totalItems = 12;

const daysOfMonthArray = [];
let currentDate = new Date(startDate); // 复制起始日期,避免修改原对象

for (let i = 0; i < totalItems; i++) {
  daysOfMonthArray.push(currentDate.getDate()); // 提取当前日期的日数
  currentDate.setDate(currentDate.getDate() + incrementDays); // 递增指定天数
}

console.log(daysOfMonthArray);
// 输出:[16, 21, 26, 31, 5, 10, 15, 20, 25, 30, 4, 9]

关键说明:

  • setDate() 方法会自动处理跨月/跨年的情况,比如1月31日加5天会自动跳到2月5日
  • 每次循环都复制并更新当前日期对象,确保起始日期不受修改

二、DayJS实现

// 先确保已引入DayJS:import dayjs from 'dayjs'
const startDate = dayjs('2024-01-16');
const incrementDays = 5;
const totalItems = 12;

const daysOfMonthArray = [];
let currentDate = startDate;

for (let i = 0; i < totalItems; i++) {
  daysOfMonthArray.push(currentDate.date()); // 提取当前日期的日数
  currentDate = currentDate.add(incrementDays, 'day'); // DayJS是 immutable 的,需重新赋值
}

console.log(daysOfMonthArray);
// 输出:[16, 21, 26, 31, 5, 10, 15, 20, 25, 30, 4, 9]

关键说明:

  • DayJS的 add() 方法返回新的日期对象,原对象不会被修改,所以必须重新赋值给currentDate
  • date() 方法用于获取当前日期的日数,和原生getDate()功能一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:12