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

JavaScript如何获取从今日到本周日的所有日期列表

问题原因

  • 核心错误是跨月场景下的日期差值计算逻辑错误:你直接用getDate()获取当月日期数字相减,若今日和本周日不在同一个自然月,差值会是负数,for循环直接不执行,最终数组里就只有初始push的当天日期,也就是你遇到的仅返回周一日期的问题。
  • 额外小问题:直接修改firstDayOfWeek对象不会影响功能,但差值计算的逻辑硬伤是故障的核心诱因。

修复后的dateSets方法

dateSets() {
  const dates = [];
  // 固定初始当前日期,避免后续操作覆盖原始值
  const currentDate = new Date();
  // 计算本周日的日期
  const sunday = new Date();
  sunday.setDate(sunday.getDate() - sunday.getDay() + 7);
  // 用时间戳计算日期差值,规避跨月问题
  const diffTime = sunday.getTime() - currentDate.getTime();
  const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
  // 循环覆盖从今日到周日的所有日期
  for (let i = 0; i <= diffDays; i++) {
    const tempDate = new Date(currentDate);
    tempDate.setDate(currentDate.getDate() + i);
    dates.push(tempDate);
  }
  return dates;
},

效果验证

如果今日是周一,diffDays计算结果为6,循环执行7次,返回周一到周日共7个日期;如果今日是周二,diffDays计算结果为5,循环执行6次,返回周二到周日共6个日期,完全符合需求。如果今日是周日,diffDays为0,数组仅返回周日当天,边界场景也适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:06:02