如何实现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




