获取当前日期前几个月的日期
const getDefaultDate = (month) => {
let currentDate = new Date();
let oneMonthAgo = new Date();
oneMonthAgo.setMonth(oneMonthAgo.getMonth() - month)
return [dayjs(oneMonthAgo).format('YYYY-MM-DD'), dayjs(currentDate).format('YYYY-MM-DD')]
}
const dateArr = getDefaultDate(3)
console.log(dateArr) // ['2023-11-21', '2024-02-21']
获取两个日期间所有的月份
const generateMonths = (startMonth, endMonth) => {
const months = [];
const [startYear, startMonthNum] = startMonth.split('-').map(Number);
const [endYear, endMonthNum] = endMonth.split('-').map(Number);
let currentYear = startYear;
let currentMonth = startMonthNum;
while ( currentYear < endYear || (currentYear === endYear && currentMonth <= endMonthNum) ) {
months.push(`${currentYear}-${String(currentMonth).padStart(2, '0')}`);
if (currentMonth === 12) {
currentYear++;
currentMonth = 1;
} else {
currentMonth++;
}
}
return months;
}
console.log(generateMonths('2023-12', '2024-09')) // ['2023-12', '2024-01',...,'2024-09']
两个日期(年月日)之间比较
const compareDatesByYearMonthDay = (date1, date2) => {
// 获取日期1的年、月、日
let year1 = date1.getFullYear();
let month1 = date1.getMonth();
let day1 = date1.getDate();
// 获取日期2的年、月、日
let year2 = date2.getFullYear();
let month2 = date2.getMonth();
let day2 = date2.getDate();
// 创建新的日期对象,只包含年、月、日,时间部分为0
let newDate1 = new Date(year1, month1, day1, 0, 0, 0, 0);
let newDate2 = new Date(year2, month2, day2, 0, 0, 0, 0);
// 使用时间戳比较两个日期
if (newDate1.getTime() > newDate2.getTime()) {
return true;
} else if (newDate1.getTime() < newDate2.getTime()) {
return false;
} else {
return false;
}
}
两个日期(年月日时)之间的比较
const compareDatesByYearMonthDayHour = (date1, date2) => {
// 获取日期1的年、月、日
let year1 = date1.getFullYear();
let month1 = date1.getMonth();
let day1 = date1.getDate();
let hour1 = date1.getHours()
// 获取日期2的年、月、日
let year2 = date2.getFullYear();
let month2 = date2.getMonth();
let day2 = date2.getDate();
let hour2 = date2.getHours()
// 创建新的日期对象,只包含年、月、日,时间部分为0
let newDate1 = new Date(year1, month1, day1, hour1, 0, 0, 0);
let newDate2 = new Date(year2, month2, day2, 12, 0, 0);
// 使用时间戳比较两个日期
if (newDate1.getTime() >= newDate2.getTime()) {
return true;
} else if (newDate1.getTime() < newDate2.getTime()) {
return false;
} else {
return false;
}
}