就是有两个时间,然后计算出两个时间的差是多少个月,因为每个月天数并不是一直相同的,还有2月份这个特殊月份,所以没办法有规律的去计算,请问前端vue有没有什么方法能计算出来呢,比如2022-02-28到2022-03-28算一个月,到2022-03-29就算两个月了,然后2022-10-31到2022-11-30就算是一个月了,请问哪位有写过类似的能不能指点一下,万分感谢
这是我项目里用到的算租期的,你多输入几个临界值看看符不符合你的要求,或者你自己改一下。下边是几个例子
getMiddleDate('2021-02-28','2021-03-28') 返回 '1月1日'
getMiddleDate('2021-02-28','2022-02-28') 返回 '1年0月1日'
getMiddleDate('2021-02-28','2022-02-27') 返回 '1年'
getMiddleDate('2021-01-31','2022-02-28')和getMiddleDate('2021-01-30','2022-02-28')还有getMiddleDate('2021-01-29','2022-02-28')都返回 '1年1月',这是租房系统特殊要求的。
function getMiddleDate(start,end){
const startArr = start.split(" ")[0].split("-")
const endArr = end.split(" ")[0].split("-")
let year = endArr[0] - startArr[0]
let month
if( endArr[1] < startArr[1]){
month = 12 - Number(startArr[1]) + Number(endArr[1]) - 1
year-=1
}else{
month =endArr[1] - startArr[1]
}
console.log(month)
let mDay = new Date(startArr[0],startArr[1],0).toLocaleString().split(" ")[0].split("/")[2]
let day = mDay - Number(startArr[2] - 1) + Number(endArr[2])
console.log(day,mDay)
if(day >= mDay){
day = day - mDay
if(month == 12){
month = 1
year+=1
} else{month+=1}
}
if(startArr[1] <= endArr[1])month -= 1
if(day == 31) {day = 0;month+=1}
if(new Date(endArr[0],endArr[1],0).toLocaleString().split(" ")[0].split("/")[2] == 30 && day == 30){
day = 0
month += 1
}
if((endArr[0]%4==0&&endArr[0]%100!=0)||(endArr[0]%400==0)){
if(endArr[1] == '02'&&day>=29){
day = 0
month += 1
}
}else{
if(endArr[1] == '02'&&day>=28){
day = 0
month += 1
}
}
if(month == 12){
month = 0
year+=1
}
return (year>0?year+"年":"")+(month>0?month+"月":day>0&&year>0?"0月":"")+(day>0?day+"日":"")
}
https://blog.csdn.net/weixin_44058725/article/details/126759726?spm=1001.2014.3001.5502
这个 不知道 能不能帮到你 。使用moment.js实现
可以用XEUtils方法库,里面有很多对于日期操作的方法
getDateDiff (startDate, endDate [, rules]) 返回两个日期之间差距,如果结束日期小于开始日期 done 为 fasle
XEUtils.getDateDiff('2017-11-20', '2017-12-21')
// { done: true, time: 2678400000, yyyy: 0, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, S: 0 }
XEUtils.getDateDiff('2017-12-20', '2017-12-21')
// { done: true, time: 86400000, yyyy: 0, MM: 0, dd: 1, HH: 0, mm: 0, ss: 0, S: 0 }
XEUtils.getDateDiff('2018-01-01', '2017-12-21')
// { done: false, time: 0 }
let dateDiff = XEUtils.getDateDiff('2017-12-20 10:10:30', '2017-12-21 10:15:00')
let content = `${dateDiff.mm}分${dateDiff.ss}秒`
// '4分30秒'