js时间差计算的几种方式

	// 计算相差月数(第一种)
	var endTime = '2023-02';
	var startTime = '2022-12';
	endTime = endTime.split('-');
	endTime = parseInt(endTime[0]) * 12 + parseInt(endTime[1]);
	startTime = startTime.split('-');
	startTime = parseInt(startTime[0]) * 12 + parseInt(startTime[1]);
	var m = Math.abs(endTime - startTime);
	console.log(m)
	
    // 计算相差月数(第二种)
	var endTime = '2023-02';
	var startTime = '2022-12';
    let diffMonth = this.getD(startTime ,endTime );
    console.log(diffMonth)
    // 获取相差几个月
    function getD(a,b){
      var arrA = a.split("-"),
          arrB = b.split("-"),
          yearA = arrA[0],
          yearB = arrB[0],
          monthA = +arrA[1],
          monthB = (yearB-(+yearA))*12+parseInt(arrB[1]),
          rA = [],
          rB = [];
      do{
        do{
          rA.push(yearA+""+(monthA > 9 ? monthA : "0"+monthA));
          rB.push(yearA+"年"+monthA+"月");
          if(monthA == 12){
            monthA=1;
            monthB -= 12;
            break;
          }
        }while(monthB > monthA++)
      }while(yearB > yearA++)
      // return [rA,rB];
      return rB;
    },
	
	// 计算相差天数(第一种)
	var date1 = "2022-03-30";
	var stime = new Date(date1).getTime();
	var date2 = "2022-03-07";
	var etime = new Date(date2).getTime();
	console.log(stime);//大的时间
	console.log(etime);//小的时间
	let usedTime = stime - etime; // 两个时间戳相隔的毫秒数
	let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算相差的天数
	console.log(days)//相差的时间
	if(days>30){
		console.log("时间大于一个月")
	}else{
		console.log("时间在一月以内")
	}
	
	// 计算相差天数(第二种)
	    let first =  "2022-03-07";  //开始时间
        let second = "2022-03-30";  //结束时间
        let data1 = Date.parse(first.replace(/-/g, "/"));
        let data2 = Date.parse(second.replace(/-/g, "/"));
        let datadiff = data2 - data1;
        let time = 30 * 24 * 60 * 60 * 1000;
        if (first.length > 0 && second.length > 0) {
          if (datadiff < 0 || datadiff > time) {
            callback(new Error('日期范围不能大于30天'))
            return false;
          }else{
            callback()
          }
        }

   //两个时间相差的分钟数
      var d1 = new Date('2023-04-22 22:21:28');
      var d2 = new Date('2023-04-23 12:21:28');
      let diffTime = parseInt(d2 - d1) / 1000 / 60 //两个时间相差的分钟数
      console.log(diffTime)
            
   //两个时间相差的天、时、分、秒、毫秒
      var d1 = new Date('2023-04-22 22:21:28');
      var d2 = new Date('2023-04-23 12:21:28');
      var dateDiff = d2 - d1;//时间差的毫秒数
      var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
      var leave1 = dateDiff % (24 * 3600 * 1000)  //计算天数后剩余的毫秒数
      var hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数
      //计算相差分钟数
      var leave2 = leave1 % (3600 * 1000)  //计算小时数后剩余的毫秒数
      var minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数
      //计算相差秒数
      var leave3 = leave2 % (60 * 1000)   //计算分钟数后剩余的毫秒数
      var seconds = Math.round(leave3 / 1000)
      var leave4 = leave3 % (60 * 1000)   //计算分钟数后剩余的毫秒数
      var minseconds = Math.round(leave4 / 1000)
      var timeFn = "耗时:" + dayDiff + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒" + minseconds + "毫秒";
      console.log(timeFn)
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值