如何使用Day.js检测指定月份的首个工作日?
实现方案
场景1:获取当月1号的星期偏移量(用于日历首行留空,避免1号默认显示在周日位置)
这是你描述需求的核心实现逻辑,直接用Day.js自带API即可实现:
- 先拿到目标月份的第一天实例:
const firstDay = dayjs(给定日期).startOf('month') - 调用
day()方法获取星期索引:const offset = firstDay.day()
返回值范围是0(对应周日)到6(对应周六),这个返回值就是你需要在日历第一行开头预留的空单元格个数。
举个实际示例:2024年5月1日是周三,调用dayjs('2024-05').startOf('month').day()会返回3,你在首行先渲染3个空单元格,第4个单元格放1号即可正确对齐星期位置。
场景2:获取当月首个工作日(默认周一至周五为工作日)
可以直接使用下面的方法实现:
function getFirstWorkDay(date) { let current = dayjs(date).startOf('month') const weekIndex = current.day() // 周日往后推1天到周一 if (weekIndex === 0) current = current.add(1, 'day') // 周六往后推2天到周一 if (weekIndex === 6) current = current.add(2, 'day') return current }
方法返回当月第一个工作日的dayjs实例,你可以根据需求格式化输出日期或者获取对应的星期偏移量。
内容的提问来源于stack exchange,提问作者aydgn
相关产品推荐
相关产品推荐

