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

如何在Javascript中统计两个日期之间各星期几的数量?

获取两个日期之间各星期几的数量

原生JavaScript实现

无需依赖任何第三方包,直接通过遍历日期区间完成统计:

function countWeekdaysBetween(startDate, endDate) {
  // 初始化星期计数,对应getDay()返回值:0=周日,1=周一...6=周六
  const weekdayCounts = [
    { dayOfTheWeek: "Sunday", nbOf: 0 },
    { dayOfTheWeek: "Monday", nbOf: 0 },
    { dayOfTheWeek: "Tuesday", nbOf: 0 },
    { dayOfTheWeek: "Wednesday", nbOf: 0 },
    { dayOfTheWeek: "Thursday", nbOf: 0 },
    { dayOfTheWeek: "Friday", nbOf: 0 },
    { dayOfTheWeek: "Saturday", nbOf: 0 }
  ];

  // 复制日期对象,避免修改原数据
  const currentDate = new Date(startDate);
  
  // 遍历日期区间
  while (currentDate <= endDate) {
    const dayIndex = currentDate.getDay();
    weekdayCounts[dayIndex].nbOf++;
    // 日期加1天
    currentDate.setDate(currentDate.getDate() + 1);
  }

  // 调整为周一到周日的顺序返回
  return [
    weekdayCounts[1],
    weekdayCounts[2],
    weekdayCounts[3],
    weekdayCounts[4],
    weekdayCounts[5],
    weekdayCounts[6],
    weekdayCounts[0]
  ];
}

// 测试示例
const start = new Date('2022-12-01');
const end = new Date('2022-12-31');
console.log(countWeekdaysBetween(start, end));
// 输出结果与示例一致

使用NPM包实现(以date-fns为例)

date-fns是轻量级日期处理库,提供了便捷的日期区间操作方法:

  1. 先安装包:
npm install date-fns
  1. 编写统计代码:
import { eachDayOfInterval, format } from 'date-fns';

function countWeekdaysWithDateFns(startDate, endDate) {
  // 初始化星期计数对象
  const counts = {
    Monday: 0,
    Tuesday: 0,
    Wednesday: 0,
    Thursday: 0,
    Friday: 0,
    Saturday: 0,
    Sunday: 0
  };

  // 获取区间内所有日期
  const days = eachDayOfInterval({ start: startDate, end: endDate });
  
  // 遍历统计每个星期几的数量
  days.forEach(day => {
    const weekdayName = format(day, 'EEEE'); // 获取英文完整星期名称
    counts[weekdayName]++;
  });

  // 转换为目标数组格式
  return Object.entries(counts).map(([dayOfTheWeek, nbOf]) => ({
    dayOfTheWeek,
    nbOf
  }));
}

// 测试示例
const start = new Date('2022-12-01');
const end = new Date('2022-12-31');
console.log(countWeekdaysWithDateFns(start, end));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:25:21