You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现JavaScript程序统计当月截至当前日期的工作日天数(排除周六周日)

计算当月截至今日的工作日天数

嘿,我懂你要实现的功能——统计从当月1号到今天的所有工作日(排除周六和周日)对吧?你的手动计算思路方向是对的,但咱们可以用代码自动完成这个判断,再也不用手动调整数值啦。

完整解决方案代码

// 获取当前日期
const today = new Date();
// 生成当月第一天的日期对象:年份、当前月份,日期固定为1
const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);

let workDayCount = 0;
// 从当月第一天开始,遍历到今日为止
for (let date = new Date(firstDayOfMonth); date <= today; date.setDate(date.getDate() + 1)) {
  // getDay()返回0(周日)到6(周六),工作日对应1-5(周一到周五)
  const dayOfWeek = date.getDay();
  if (dayOfWeek !== 0 && dayOfWeek !== 6) {
    workDayCount++;
  }
}

console.log(workDayCount);

代码细节解释

  • 锁定当月第一天:用new Date(today.getFullYear(), today.getMonth(), 1)可以精准拿到当月1号,不管当前是几号,都能适配所有月份。
  • 遍历日期区间:通过循环每天给日期加1,直到遍历到今日为止。这里每次循环都基于前一天的日期更新,不会出现对象引用混乱的问题。
  • 工作日判断逻辑Date.getDay()返回的数字里,0代表周日、6代表周六,只要不是这两个值,就判定为工作日,计数加1。

验证你的示例场景

  • 若今日是9月9日:1号到9号里,周末是2号(周六)、3号(周日),9天减去2天周末,正好得到7个工作日,和你预期一致。
  • 若今日是9月20日:1号到20号里,周末是2-3、9-10、16-17(共6天),20-6=14,也完全符合你的要求。

这样代码就能自动适配所有月份的情况,不用再手动调整数值啦!

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

火山引擎 最新活动