如何生成遵循日历规则、按指定增量递增的日期天数数组?
实现按固定增量生成跨月日期数组
下面分别用原生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
相关产品推荐
相关产品推荐

