export const Date = (date1, date2) => {
console.log(date1, date2);
let str = '';
let state = new Date(date1);
let end = new Date(date2);
console.log(state);
console.log(end);
// 如果开始时间晚于结束时间,交换日期,并记录交换状态
if (state > end) {
const tmp = state;
state = end;
end = tmp;
}
// 分别取二个日期的年、月、日值
const d1 = state.getDate();
const m1 = state.getMonth() + 1;
const y1 = state.getFullYear();
const d2 = end.getDate();
const m2 = end.getMonth() + 1;
const y2 = end.getFullYear();
// 获取每个月的天数,这里要注意一下闰年的2月
const getMonthDays = function (y, m) {
const aMonthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (m === 2 && (y % 400 === 0 || (y % 4 === 0 && y % 100 !== 0))) {
return 29;
}
return aMonthDays[m];
};
let y, m, d;
let tmpM = 0;
let tmpY = 0;
// 计算日,不足时向月份借
if (d2 >= d1) {
d = d2 - d1;
} else {
tmpM = -1;
d = getMonthDays(y1, m1) + d2 - d1;
}
// 计算月,不足时向年份借
if (m2 + tmpM >= m1) {
m = m2 + tmpM - m1;
} else {
tmpY = -1;
m = 12 + m2 + tmpM - m1;
}
// 计算年
y = y2 + tmpY - y1;
if (y > 0) {
str = y + '年 ' + ('0' + m).substr(-2) + '月 ' + ('0' + d).substr(-2) + '天 ';
} else if (m > 0) {
str = m + '月 ' + ('0' + d).substr(-2) + '天 ';
} else if (d > 0) {
str = d + '天 ';
}
return str;
};
07-28
412
12-31
1142
11-08
491
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交