export const diffDate = (date1, date2) => { let str = ''; let state = new Date(date1); let end = new Date(date2); // 如果开始时间晚于结束时间,交换日期,并记录交换状态 if (state > end) { let tmp = state; state = end; end = tmp; } // 分别取二个日期的年、月、日值 let d1 = state.getDate(); let m1 = state.getMonth() + 1; let y1 = state.getFullYear(); let d2 = end.getDate(); let m2 = end.getMonth() + 1; let y2 = end.getFullYear(); // 获取每个月的天数,这里要注意一下闰年的2月 let getMonthDays = function (y, m) { let 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; };
js 时间戳相减算出年月日
最新推荐文章于 2024-08-27 15:36:53 发布