碰到一个需求,获取某年某月某周一周的日期。踩了个小坑,国外一周是从周天开始的,所以周天是0,而我们国内是从周一开始的。
错误代码
const dayjs = require("dayjs");
const year = 2023;
const month = 10;
const week = 1;
for (let day = 0; day < 7; day++) {
console.log(dayjs(`${year}-${month}`).startOf("month").add(week - 1, "week").day(day).format("YYYY-MM-DD"));
}
看日历我们知道,2023年10月1日是星期天也就是第一周最后一天,那么第一周周一到周天的数据应该是2023-09-25-2023-10-01,但结果得到的是2023-10-01-2023-10-07。因为10月1日是星期天,在国外算一周的开始,所以判定第一周为1-7号。
正确代码
const dayjs = require("dayjs");
const year = 2023;
const month = 10;
const week = 1;
const monthStart = dayjs(`${year}-${month}`).startOf("month");
const isSunDay = monthStart.day() === 0;
for (let day = 1; day <= 7; day++) {
console.log(monthStart.add(isSunDay ? week - 2 : week - 1, "week").day(day).format("YYYY-MM-DD"));
}
附上Dayjs中文官网地址,详细Api请查看官网Day.js中文网 (fenxianglu.cn)https://dayjs.fenxianglu.cn/