话不多说,先上代码。
diffTime(d1, d2) {
d1 = new Date(d1.replace(/-/g, '/')) //结束时间
d2 = new Date(d2.replace(/-/g, '/')) //开始时间
if (d1.getTime() < d2.getTime()) {
console.log('结束日期不能小于开始时间')
return '结束日期不能小于开始时间'
}
var Y1 = d1.getFullYear() // 结束年份
var Y2 = d2.getFullYear() // 开始年份
var M1 = d1.getMonth() + 1 // 结束月份
var M2 = d2.getMonth() + 1 // 开始月份
var D1 = d1.getDate() // 结束日期
var D2 = d2.getDate() // 开始日期
var M1_days = new Date(Y1, M1, 0).getDate() // 结束时间当月的天数
var M2_days = new Date(Y2, M2, 0).getDate() // 开始时间当月的天数
var obj = {} // 结果存储器
var year = Y1 - Y2 - 1 // 相差整年数
var month=M1 - 1 + 12 - M2 // 相差整月数(非同年);
if (year < 0) {
month = M1 - M2 - 1 // 相差整月数(同年)
}
var diffDays = D1 + (M2_days - D2) // 相差总天数
if (diffDays >= M2_days) {
month = month + 1
var day = diffDays - M2_days
} else {
var day = diffDays
}
year += Math.floor(month / 12)
if (year < 0) {
year = 0
}
month = month % 12;
obj.year = year;
obj.month = month;
obj.day = day;
return obj;
}
d1是当前时间,d2是入职时间,计算结果。