年月日借位相减,输入两个时间点的 年月日

/**
 * 计算两个日期的时长,返回x年x月x日,传入时间戳
 */
export function getDateDurations (startDate, endDate) {
  let startYear = parseInt(moment(startDate).format('YYYY'))
  let startMonth = parseInt(moment(startDate).format('MM'))
  let startDay = parseInt(moment(startDate).format('DD'))
  let endYear = parseInt(moment(endDate).format('YYYY'))
  let endMonth = parseInt(moment(endDate).format('MM'))
  let endDay = parseInt(moment(endDate).format('DD')) + 1
  let currentMonthDays = 31
  if ([1,3,4,7,8,10,12].includes(startMonth)) {
    currentMonthDays = 31
  } else if ([4,6,9,11].includes(startMonth)) {
    currentMonthDays = 30
  } else if (startMonth === 2) {
    currentMonthDays = 28
  }

  let monthJ1 = false // 是否需要向上级月份借位
  let yearJ1 = false // 是否需要向上级年份借位
  let mDay = endDay - startDay
  let mMonth = endMonth - startMonth
  let mYear = endYear - startYear

  if (mDay < 0) {
    monthJ1 = true
    mDay = mDay + currentMonthDays
  }

  if (monthJ1) {
    mMonth = mMonth - 1
  }
  if (mMonth < 0) {
    yearJ1 = true
    mMonth = mMonth + 12
  }
  if (mYear > 0) {
    if (yearJ1) {
      mYear = mYear - 1
    }
  }
  return (mYear ? mYear + '年' : '') + (mMonth ? mMonth + '月' : '') + (mDay ? mDay + '日' : '')
}
发布了178 篇原创文章 · 获赞 875 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/github_35631540/article/details/103263481