注:针对2024-05-01这种格式,如果要是用则先转格式
会和今天 的时间做对比,
然后返回昨天,今天,明天,上周几,下周几,本周几,
如果是在本年则显示mm-dd,如果不在本年则显示yyyy-mm-dd
compareDate(inputDate) {
var today = new Date();
var input = new Date(inputDate);
// 将输入日期和今天日期的时分秒设置为0
input.setHours(0, 0, 0, 0);
today.setHours(0, 0, 0, 0);
var oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
var todayDayOfWeek = today.getDay(); // 获取今天是一周中的哪一天(0是周日,1是周一)
// 计算本周、上周、下周的起始和结束日期
var startOfThisWeek = new Date(today - (todayDayOfWeek === 0 ? 6 : todayDayOfWeek - 1) * oneDay);
var endOfThisWeek = new Date(startOfThisWeek.getTime() + 6 * oneDay);
var startOfLastWeek = new Date(startOfThisWeek.getTime() - 7 * oneDay);
var endOfLastWeek = new Date(startOfLastWeek.getTime() + 6 * oneDay);
var startOfNextWeek = new Date(endOfThisWeek.getTime() + oneDay);
var endOfNextWeek = new Date(startOfNextWeek.getTime() + 6 * oneDay);
var daysOfWeek = ["日", "一", "二", "三", "四", "五", "六"];
var diffDays = (input - today) / oneDay; // 计算差值天数
// 检查是否是同一年
var sameYear = today.getFullYear() === input.getFullYear();
// 基础逻辑判断
if (diffDays === 0) {
return "今天";
} else if (diffDays === 1) {
return "明天";
} else if (diffDays === -1) {
return "昨天";
} else if (input >= startOfThisWeek && input <= endOfThisWeek) {
return "本周" + daysOfWeek[input.getDay()];
} else if (input >= startOfNextWeek && input <= endOfNextWeek) {
return "下周" + daysOfWeek[input.getDay()];
} else if (input >= startOfLastWeek && input <= endOfLastWeek) {
return "上周" + daysOfWeek[input.getDay()];
} else {
// 日期不在本周、上周、下周、今天、明天、昨天,检查是否本年
if (sameYear) {
return `${(input.getMonth() + 1).toString().padStart(2, '0')}-${input.getDate().toString().padStart(2, '0')}`; // 本年,返回 mm-dd
} else {
return `${input.getFullYear()}-${(input.getMonth() + 1).toString().padStart(2, '0')}-${input.getDate().toString().padStart(2, '0')}`; // 非本年,返回 yyyy-mm-dd
}
}
},