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

如何从日期列表统计总天数、周末天数及涉及月份数?

统计日期列表的总天数、周末天数及涉及月份数

问题描述

我有一份时间范围在2023-01-01至2024-01-01的日期列表,格式如下:

[
  "2023-01-31T23:00:00.000Z",
  "2023-02-01T23:00:00.000Z",
  "2023-02-02T23:00:00.000Z",
  "2023-02-03T23:00:00.000Z",
  ....
]

需要统计列表中的总天数、周末天数以及涉及的月份数量,最终输出如下格式的对象:

{
  "day": 12,
  "weekend": 5,
  "month": 5
}

解决方案(JavaScript实现)

通过遍历日期数组,结合Date对象的方法即可完成统计:

const dateList = [
  "2023-01-31T23:00:00.000Z",
  "2023-02-01T23:00:00.000Z",
  "2023-02-02T23:00:00.000Z",
  "2023-02-03T23:00:00.000Z",
  // 补充其他日期
];

// 初始化统计变量
const stats = {
  day: dateList.length,
  weekend: 0,
  month: 0
};
// 用集合存储唯一年月组合,避免跨年份同月份重复统计
const uniqueMonths = new Set();

dateList.forEach(dateStr => {
  const date = new Date(dateStr);
  // 获取UTC星期数:0=周日,6=周六
  const dayOfWeek = date.getUTCDay();
  // 统计周末天数
  if (dayOfWeek === 0 || dayOfWeek === 6) {
    stats.weekend++;
  }
  // 拼接YYYY-MM格式的年月字符串
  const yearMonth = `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}`;
  uniqueMonths.add(yearMonth);
});

// 更新月份数量
stats.month = uniqueMonths.size;

console.log(stats);

关键逻辑说明

  • 总天数:直接取数组长度,每个元素对应独立一天。
  • 周末天数:利用getUTCDay()获取UTC时区的星期数,判定周日(0)和周六(6)为周末并计数。
  • 涉及月份数:通过Set存储YYYY-MM格式的年月字符串,自动去重后取集合大小,确保不同年份的同月份不会被重复统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:33:19