資料
使用
- 安裝
npm install dayjs
使用 dayjs 通過 2025-8 (2025年第8周) 這樣的文本數(shù)據(jù)返回對應(yīng)周的周一的年月日和周日的年月日
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月) 這樣的文本數(shù)據(jù)返回對應(yīng)月的第一天的年月日和最后一天的年月日
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'));
- 將上面的兩個(gè)功能封裝成一個(gè)函數(shù)
/**
* 通過 2025-8 (2025年第8周) 返回對應(yīng)周的周一的年月日和周日的年月日 或者 通過 2025-1 (2025年第1月) 返回對應(yīng)月的第一天的年月日和最后一天的年月日
* @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'));