计算两个日期时间差年月日时分秒

function calculateDates (startime,endtime) {
 startime = startime.replace(new RegExp("-","gm"),"/");//转换-变为/
 endtime = endtime.replace(new RegExp("-","gm"),"/");
 var minTime = new Date(startime).getTime()>new Date(endtime).getTime()?endtime:startime
 var maxTime = new Date(startime).getTime()>new Date(endtime).getTime()?startime:endtime
 
 var start       = new Date(minTime);
 var startYear   = start.getFullYear(); //开始年份
 var startMonth  = start.getMonth() + 1;//开始月份
 
 
 var end      = new Date(maxTime);
 var endYear  = end.getFullYear(); //结束年份
 var endMonth = end.getMonth() + 1;//结束月份
 
//  年
 var mideleYear=new Date(minTime)
 mideleYear.setFullYear(endYear)
 var years = Math.abs(mideleYear.getFullYear() - start.getFullYear());
 if(mideleYear.getTime()>end.getTime()){
  years--
 }
 
// 月
var mideleMonthDay = new Date(minTime)
mideleMonthDay.setFullYear(endYear)
mideleMonthDay.setMonth(endMonth-1)
console.log(mideleMonthDay.toLocaleDateString())
var months = (endYear*12+endMonth) - (startYear*12+startMonth) - years*12
if(mideleMonthDay.getTime()>end.getTime()){
  months--
}
 
// 日
var day = (Math.floor((end.getTime() - start.getTime()) / 24 / 60/ 60 / 1000))
if(end.getTime()> mideleMonthDay.getTime()){
  day = (Math.floor( (end.getTime() - mideleMonthDay.getTime()) / 24 / 60/ 60 / 1000)) - day
}else{
  let prevMonthDay = new Date(mideleMonthDay)
  prevMonthDay.setMonth(endMonth-2)
  day = (Math.floor((end.getTime() - prevMonthDay.getTime()) / 24 / 60/ 60 / 1000))
}
 
var chaTime = end.getTime() - start.getTime()
 
var chaDay = Math.floor(chaTime / 24 / 60/ 60 / 1000)
 
var hour = Math.floor(chaTime / 60/ 60 / 1000) - chaDay*24
 
var min = Math.floor(chaTime / 60 / 1000) - chaDay*24*60 - hour*60
 
var sec =  Math.floor(chaTime / 1000) - chaDay*24*60*60 - hour*60*60 - min*60
 
var chastr = years+'年'+months+'月'+day+'日'+hour+'时'+min+'分'+sec+'秒';
 
console.log('相差时间:'+chastr);

}

不喜欢返回负数可转换,如:

var n = -30;
n = Math.abs(n);
console.log(n); // 30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值