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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,872评论 6 13
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,225评论 4 61
  • 10月3日,上午我赶完集回到家,女儿写完作业在玩水晶泥。我换下衣服,准备做饭,女儿特别爱帮着干活,跑过来说:爸爸,...
    a1eaf0825d24阅读 3,468评论 0 2
  • 生病、工作忙、家里停水,电费多得吓人……各种的艰难时刻,你忍不住上网发发微博,楼下的回复想着也知道,“你得结婚啦。...
    420_c644阅读 1,644评论 0 1
  • 今天周末,上班。下午遇到surprise,一个crv找回来说车底漏油,上架子检查后发现放油螺丝几乎快掉下来了,真是...
    曾经小飞阅读 1,287评论 0 0