js计算时间间隔(年月日、天)。

//计算时间间隔年月日

export function difTime(date1, date2) {
  let begin = new Date(date1);
  let end = new Date(date2);
  // 开始时间小于结束时间,交换日期,并记录状态
  let isTrue = false;
  if (begin > end) {
    let recordBegin = begin;
    begin = end;
    end = recordBegin;
    isTrue = true;
  }
  // 分别取二个日期的年、月、日值
  let d1 = begin.getDate();
  let m1 = begin.getMonth() + 1;
  let y1 = begin.getFullYear();
  let d2 = end.getDate();
  let m2 = end.getMonth() + 1;
  let y2 = end.getFullYear();
  // 获取每个月的天数,闰年的2月有29天
  var getMonthDays = function (y, m) {
    var 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
  // 拼接距离字符串 输出格式如:"5天", "5月 05天", "5年 05月 05日"
  let str = "";
  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  (isTrue ? "-" : " ") + str;
}

// 相差时间天

export function DateDiffDay(d1, d2) {
  let value = 24 * 60 * 60 * 1000 // 计算差多少天
  const dateArr = d1.split('-')
  let checkDate = new Date()
  checkDate.setFullYear(dateArr[0], dateArr[1] - 1, dateArr[2])
  const checkTime = checkDate.getTime()
  const dateArr2 = d2.split('-')
  const checkDate2 = new Date()
  checkDate2.setFullYear(dateArr2[0], dateArr2[1] - 1, dateArr2[2])
  const checkTime2 = checkDate2.getTime()
  return parseInt((checkTime2 - checkTime) / value)
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值