1.引入 dayjs ,获取当前季度的范围
import dayjs from 'dayjs';
// 获取本季开始日期和结束日期
function getQuarterStartAndEndDate(): [string, string] {
const date = dayjs();
const y = date.year();
const q = date.quarter();
const mStart = q * 3 - 2;
const mEnd = q * 3;
const start = dayjs(`${y}-${mStart}`).startOf('month').format('YYYY-MM-DD');
const end = dayjs(`${y}-${mEnd}`).endOf('month').format('YYYY-MM-DD');
return [start, end];
}
// 使用
getQuarterStartAndEndDate() // ['2024-04-01', '2024-06-31']
2.获取上赛季开始日期和结束日期
import dayjs from 'dayjs';
function getPreQuarterStartAndEndDate(): [string, string] {
const date = dayjs();
const y = date.year();
const q = date.quarter();
let start = '';
let end = '';
if (q < 2) {
start = dayjs(`${y - 1}-${10}`)
.startOf('month')
.format('YYYY-MM-DD');
end = dayjs(`${y - 1}-${12}`)
.endOf('month')
.format('YYYY-MM-DD');
} else {
const mStart = (q - 1) * 3 - 2;
const mEnd = (q - 1) * 3;
start = dayjs(`${y}-${mStart}`).startOf('month').format('YYYY-MM-DD');
end = dayjs(`${y}-${mEnd}`).endOf('month').format('YYYY-MM-DD');
}
return [start, end];
}
// 示例
getPreQuarterStartAndEndDate() // ['2024-01-01', '2024-03-31']
3.获取两个日期之间的所有日期
import dayjs from 'dayjs';
/**
* 获取两个日期之间的所有日期
* @param start - 开始时间 格式:"YYYY-MM-DD"
* @param end - 结束时间 格式:"YYYY-MM-DD"
* @return string[]
*/
function getDateRange(start: string, end: string): string[] {
let startDate = dayjs(start); // 开始时间
const endDate = dayjs(end); // 结束时间
if (!start || !end || startDate.isAfter(endDate)) {
return [];
}
const dateRange: string[] = [];
while (startDate.isBefore(endDate) || startDate.isSame(endDate)) {
dateRange.push(startDate.format('YYYY-MM-DD'));
startDate = startDate.add(1, 'day');
}
return dateRange;
}
// 示例
getDateRange('2024-01-01','2024-01-03') // ['2024-01-01', '2024-01-02', '2024-01-03']