js 计算两个日期之间相差的月份,js计算特定日期n月(前后)的日期

工具方法记录:
用于日期组件选择月份时

/**
 * 计算两个日期之间相差的月份
 * @param {Date} minDate 最小日期
 * @param {Date} maxDate 最大日期
 */
export const getMonthRange = function(minDate,maxDate){
  if (minDate && maxDate) {
    let minYear = minDate.getFullYear();
    let minMonth = minDate.getMonth()+1;
    let maxYear = maxDate.getFullYear();
    let maxMonth = maxDate.getMonth()+1;
    return (maxYear*12+maxMonth) - (minYear*12+minMonth)
  } else {
    return ''
  }
}
/**
 * 计算特定日期x月(前后)的日期
 * @param {Date} souceDate 特定日期
 * @param {Number} month 月份差,当为正数时计算x月后日期,为负数时计算x月前日期
 */
export const getDateByMonth = function(souceDate,month){
  //计算参照日期的月份总数
  let sourceMonths = souceDate.getFullYear()*12 + souceDate.getMonth()+1;
  //计算目标日期的月份总数
  let targetMonths = sourceMonths + month;
  //计算目标日期年份
  let targetYear = Math.floor(targetMonths/12);
  //计算目标日期月份
  let targetMonth = targetMonths%12;
  //返回计算结果,默认设置为1号
  let time = new Date(targetYear,0,1);
  time.setMonth(targetMonth);
  time.setDate(0)
  return time;
}

你可能感兴趣的:(js 计算两个日期之间相差的月份,js计算特定日期n月(前后)的日期)