判断给定日期范围内是否包含指定的星期几

在项目中遇到了一个需求,判断给定日期范围内是否包含指定的星期几

    function checkWeekdayInRange(startDate, endDate, weekday) {
      const start = new Date(startDate);
      const end = new Date(endDate);

      // 将开始日期设置为0点
      start.setHours(0, 0, 0, 0);

      // 将结束日期设置为23:59:59.999
      end.setHours(23, 59, 59, 999);

      // 循环遍历日期范围内的每一天,检查该天是否是指定的星期几
      for (let d = start; d <= end; d.setDate(d.getDate() + 1)) {
        if (d.getDay() === weekday) {
          return true;
        }
      }

      // 如果循环结束仍未找到指定的星期几,则返回 false
      return false;
    }

这个函数接受三个参数:

  • startDate: 范围的开始日期。必须是合法的日期字符串(例如 “2023-04-22”)或 Unix 时间戳(以毫秒为单位的整数)。
  • endDate: 范围的结束日期。必须与 startDate 格式相同。
  • weekday: 要查找的星期几。必须是从 0(周日)到 6(周六)的整数。

函数首先将 startDate 和 endDate 转换为 Date 类型,并将 startDate 的时间部分设置为 0 点,将 endDate 的时间部分设置为 23:59:59.999。这样可以确保日期范围包含了所有的时间点。

然后,函数使用一个循环遍历范围内的每一天,并使用 getDay() 方法获取该天的星期几。如果找到了指定的星期几,则返回 true。如果循环结束仍未找到指定的星期几,则返回 false。

例如,要检查从 2023 年 4 月 22 日到 2023 年 4 月 28 日是否包含周六(即 6),可以这样调用函数:

const result = checkWeekdayInRange("2023-04-22", "2023-04-28", 6);
console.log(result); // true

这个例子会输出 true,因为给定的日期范围内包含了 2023 年 4 月 22 日(周六)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值