资料
使用
- 安装
npm install dayjs
使用 dayjs 通过 2025-8 (2025年第8周) 这样的文本数据返回对应周的周一的年月日和周日的年月日
const weekStr = '2025-8';
const year = parseInt(weekStr.split('-')[0]);
const weekNum = parseInt(weekStr.split('-')[1]);
// 获取该周周一的日期
const monday = dayjs().year(year).isoWeek(weekNum).startOf('isoWeek');
// 获取该周周日的日期
const sunday = dayjs().year(year).isoWeek(weekNum).endOf('isoWeek');
console.log('周一:', monday.format('YYYY-MM-DD'));
console.log('周日:', sunday.format('YYYY-MM-DD'));
- 使用 dayjs 通过 2025-1 (2025年第1月) 这样的文本数据返回对应月的第一天的年月日和最后一天的年月日
const monthStr = '2025-1';
const year = parseInt(monthStr.split('-')[0]);
const monthNum = parseInt(monthStr.split('-')[1]);
// 获取该月第一天的日期
const firstDay = dayjs().year(year).month(monthNum - 1).startOf('month');
// 获取该月最后一天的日期
const lastDay = dayjs().year(year).month(monthNum - 1).endOf('month');
console.log('第一天:', firstDay.format('YYYY-MM-DD'));
console.log('最后一天:', lastDay.format('YYYY-MM-DD'));
- 将上面的两个功能封装成一个函数
/**
* 通过 2025-8 (2025年第8周) 返回对应周的周一的年月日和周日的年月日 或者 通过 2025-1 (2025年第1月) 返回对应月的第一天的年月日和最后一天的年月日
* @param timeStr 2025-8 || 2025-1
* @param dateType w || m
*/
const getDateRange = (timeStr, dateType) => {
const [year, num] = timeStr.split('-').map(Number);
if (dateType === 'w') {
// 周模式
return [dayjs().year(year).isoWeek(num).startOf('isoWeek').format('YYYY-MM-DD'),
dayjs().year(year).isoWeek(num).endOf('isoWeek').format('YYYY-MM-DD')
];
} else {
// 月模式
return [
dayjs().year(year).month(num - 1).startOf('month').format('YYYY-MM-DD'),
dayjs().year(year).month(num - 1).endOf('month').format('YYYY-MM-DD')
]
}
}
console.log(getDateRange('2025-8', 'w'));
console.log(getDateRange('2025-1', 'm'));