JS 计算几个月后的日期 与 两个日期相差几个月

1.获取n个月后的日期(指定日期)

/**
 * @description: 获取n个月后的日期
 * @param {String} dtstr 日期
 * @param {String} n 几个月
 * @return: 日期
 */

addmulMonth(dtstr, n){        
  let s = dtstr.split("-");
  let yy = parseInt(s[0]);
  let mm = parseInt(s[1]); 
  let dd = parseInt(s[2]); 
  var num= mm + parseInt(n);

  if(num/12 > 1){
    yy += Math.floor(num/12) 
    mm = num % 12
  }else{
    mm += parseInt(n);
  }

  //获取当前日期中月的天数
  let newDate = new Date(yy,mm,0)
  //这里传入的0代表获取上一个月的最后一天;如果传1,则获得当月的第一天
  let days = newDate.getDate()
  //天数大于当前月
  if(dd > days){
    dd = days
  }

  return yy + "-" + mm  + "-" + dd
}

this.addmulMonth('2020-1-31',1)
//2020-2-31

2.获取n个月后的日期(当前日期)

/**
 * @description: 获取n个月后的日期
 * @param {String} n 几个月
 * @return: 日期
 */

addmulMonth(n){  
  let date = new Date()
  let yy = date.getFullYear()
  let mm = date.getMonth()+1
  let dd = date.getDate()

  let num= mm + parseInt(n)
  if(num/12 > 1){
    yy += Math.floor(num/12) 
    mm = num % 12
  }else{
    mm += parseInt(n);
  }

  //获取当前日期中月的天数
  let newDate = new Date(yy,mm,0)
  //这里传入的0代表获取上一个月的最后一天;如果传1,则获得当月的第一天
  let days = newDate.getDate()
  if(dd > days){
    dd = days
  }

  return yy + "-" + mm  + "-" + dd
}

console.log(this.addmulMonth(6))

3.计算指定日期与现在相差多少个月

/**
 * @description: 计算指定日期与现在相差多少个月
 * @param {number} compareYear 年
 * @param {number} compareMonth 月
 * @param {number} compareDay 日
 * @return: 相差的月数
 */

getDistanceMonth(compareYear,compareMonth,compareDay){
  let date = new Date()
  let year = date.getFullYear()
  let month = date.getMonth()+1
  let day = date.getDate()

  let yearToMonth = (compareYear - year) * 12
  let monthToMonth = compareMonth - month
  let dateToMonth = 0
  if(compareDay >= day){
    dateToMonth = 0
  }else{
    dateToMonth = -1
  }
  return yearToMonth + monthToMonth + dateToMonth
}

this.getDistanceMonth(2020,9,2)
// 1

4.计算两个日期相差多少个月

/**
 * @description: 计算两个日期相差多少个月
 * @param {String} startTime 开始时间
 * @param {String} endTime 结束时间
 * @return: 相差的月数
 */

getDistanceMonth(startTime,endTime){
  startTime = new Date(startTime)
  endTime = new Date(endTime)
  var dateToMonth = 0
  var startDate=startTime.getDate() + startTime.getHours()/24 + startTime.getMinutes()/24/60;
  var endDate=endTime.getDate()  +endTime.getHours()/24 + endTime.getMinutes()/24/60;
  if(endDate >= startDate){
    dateToMonth = 0
  }else{
    dateToMonth = -1
  }
  let yearToMonth = (endTime.getYear() - startTime.getYear()) * 12
  let monthToMonth = endTime.getMonth() - startTime.getMonth()
  return yearToMonth + monthToMonth + dateToMonth
}
  
console.log(this.getDistanceMonth('2020/1/7','2020/5/7'))
// 4

 

你可能感兴趣的:(js)