如何获取两个指定跨年度日期之间的所有周日期集合
双日期间周日期集合获取实现方案
默认规则说明:以起始日期2021年9月13日的星期(周一)作为每周的取数基准,每次间隔7天遍历覆盖全部时间范围,如果需要调整为其他星期作为周基准,可参考后续调整说明修改。
核心逻辑
- 初始化起止日期的Date对象,注意JS/TS中Date构造函数的月份参数从0开始计数
- 用遍历指针从起始日期开始迭代,每次累加7天
- 每次迭代判断当前日期是否小于等于结束日期,符合条件就推入目标数组
可直接运行代码
// 定义起止日期范围:2021年9月13日 ~ 2024年9月13日 const startDate = new Date(2021, 8, 13); const endDate = new Date(2024, 8, 13); // 初始化遍历指针,避免修改原始起始日期变量 let loopDate = new Date(startDate.getTime()); while (loopDate <= endDate) { // 拷贝新的日期实例推入数组,避免后续指针修改影响已存入的日期 this.allSelectedRegions.push(new Date(loopDate.getTime()) as any); // 指针后移7天,进入下一周 loopDate.setDate(loopDate.getDate() + 7); }
自定义调整说明
- 若需要取每周日作为周日期:迭代前先调整指针到起始日所在周的周日,添加代码
loopDate.setDate(loopDate.getDate() - loopDate.getDay())即可 - 若需要取每周其他星期几作为基准,修改上述偏移量即可,比如取周三对应偏移量为3:
loopDate.setDate(loopDate.getDate() + (3 - loopDate.getDay()))
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

