【JavaScript】从指定年月日,按月份增加,跳转到某年某月某日(兼容平年闰年、大小月)

js 从指定年月日 按月跳转

/*
 *  desc 返回从某年某月某日指定增加n个月的日期
 *  params  originalDate 原始年月日
 *  		addMonth     增加月数
 *  return Date
 */
 function getDelayDate(originalDate, addMonth) {
 	//不改变原始日期originalDate
    var originDate = new Date(originalDate.getFullYear(),originalDate.getMonth(),originalDate.getDate());
    originDate.setHours(originalDate.getHours());
    originDate.setMinutes(originalDate.getMinutes());
    originDate.setSeconds(originalDate.getSeconds());
	//获取当前天数
    var oldDate = originDate.getDate();
    //获取增加后的月数
    var newMonth = originDate.getMonth() + addMonth;
    //开始跳转到指定月份,年份会自动增加
    originDate.setMonth(newMonth);
     //0-11间循环
    var realMonth = newMonth % 12;
     //跳转月份 不是 预期月份
    if (originDate.getMonth() != realMonth) {
        originDate.setMonth(realMonth);
        //利用setDate(0)是返回上一个月的最大天数,获取真实月份最大天数
        originDate.setDate(new Date(originDate.getFullYear(), originDate.getMonth() + 1, 0).getDate());
    }
    //保持日期的准确性 使之不会超过某月的最大天数
    if (oldDate < originDate.getDate()) {
        originDate.setDate(oldDate);
    }
    return originDate;
}

示例

  var date = new Date();  
  date.setMonth(1);
  date.setDate(29); //闰年2月29日
  var originDate = getDelayDate(date, 12);
  console.log("原始日期:" +date);
  console.log("改变日期:" +originDate);

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值