首先,大致思路为:

1. 先将字符串格式的时间类型转化为Date类型

2. 再将Date类型的时间增加指定月份

3. 最后将Date类型的时间在转化为字符串类型

1.  先将字符串格式的时间类型转化为Date类型

 var str = '2018-01-01 00:00:00';   //字符串格式的时间类型
var str1 = str.replace(/-/g,'/'); //'2018/01/01 00:00:00'
var date = new Date(Date.parse(str1)); //date格式的时间类型

2. 再将Date类型的时间增加指定月份

 var nowDate = date.addMonth(3);   //date格式的时间类型

 Date.prototype.addMonth = function (addMonth) {
var y = this.getFullYear();
var m = this.getMonth();
var nextY = y;
var nextM = m;
//如果当前月+增加的月>11 这里之所以用11是因为 js的月份从0开始
if ((m + addMonth)> 11) {
nextY = y + 1;
nextM = parseInt(m + addMonth) - 12;
} else {
nextM = this.getMonth() + addMonth
}
var daysInNextMonth = Date.daysInMonth(nextY, nextM);
var day = this.getDate();
if (day > daysInNextMonth) {
day = daysInNextMonth;
}
return new Date(nextY, nextM, day);
}; //计算当前月最大天数
Date.daysInMonth = function (year, month) {
if (month == 1) {
if (year % 4 == 0 && year % 100 != 0)
return 29;
else
return 28;
} else if ((month <= 6 && month % 2 == 0) || (month > 6 && month % 2 == 1))
return 31;
else
return 30;
};

3. 最后将Date类型的时间在转化为字符串类型

 var nowStr = nowDate.format('yyyy-MM-dd hh:mm:ss');   //指定字符串格式的时间类型

 Date.prototype.format = function (format) {
var date = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S+": this.getMilliseconds()
};
if (/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in date) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1
? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
}
}
return format;
};

js实现指定日期增加指定月份的更多相关文章

  1. 【JS】JavaScript 指定日期增加天数

    指定某个日期(字符串),增加n天后,输出日期字符串,格式:年-月-日: /** * [dateAddDays 从某个日期增加n天后的日期] * @param {[string]} dateStr [日 ...

  2. oracle中从指定日期中获取月份或者部分数据

    从指定日期中获取部分数据: 如月份: select to_CHAR(sysdate,'MM') FROM DUAL; 或者: select extract(month from sysdate) fr ...

  3. mysql 获取指定日期到指定日期 区间段的日期

    第一种方法: cross join (就相当于mysql中的循环) CROSS JOIN 把两张表中的数据进行 N * M的组合,即笛卡尔积 这里的两张表利用 union all都有5条数据,所以进行 ...

  4. JS将JSON日期转换为指定格式的日期

    1.引入JS日期转换的函数库 function Format(now,mask) { var d = now; var zeroize = function (value, length) { if ...

  5. JS jQuery json日期格式问题的办法

    原生JS:Date对象详细参考 Date对象:基于1970年1月1日(世界标准时间)起的毫秒数 本文参考MDN做的详细整理,方便大家参考MDN 构造函数: new Date(); 依据系统设置的当前时 ...

  6. js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子

    JS获取日期时遇到如下需求,根据某年某周获取一周的日期.如开始日期规定为星期四到下一周的星期五为一周. 格式化日期: function getNowFormatDate(theDate) { var ...

  7. JS 比较日期相隔都少天&& 比较两个日期大小&&指定日期往前后推指定天数

    //这些天常接触到有关于js操作日期事 就小结了一下,希望对你有帮助 function conversionDate(a,b){ var start =a.split('-'); var end = ...

  8. JS计算指定日期是距今的第几周,星期几

    无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数. 首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需 ...

  9. mssql sqlserver 获取指定日期为本月第几个工作日

    转自:http://www.maomao365.com/?p=6771 摘要: 下文讲述工作中,需要获取指定日期在当月的工作日 下文讲述常规的指定工作日所在月的天数分析,实现思路:1 生成一个国家法定 ...

随机推荐

  1. react native ios打包,即生产包

    参考文章:http://www.devio.org/2017/02/09/React-Native%E5%8F%91%E5%B8%83APP%E4%B9%8B%E6%89%93%E5%8C%85iOS ...

  2. 找出list中的不同元素、删除两个list中相同的对象

    package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; ...

  3. 平衡树合集(Treap,Splay,替罪羊,FHQ Treap)

    今天翻了翻其他大佬的博客,发现自己有些...颓废... 有必要洗心革面,好好学习 序:正常的BST有可能退化,成为链,大大降低效率,所以有很多方法来保持左右size的平衡,本文将简单介绍Treap,S ...

  4. SerializeUtil

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInpu ...

  5. spring boot——MockMvc的用法 (SpringBoot 1.5.18)下测试通过

    spring boot——MockMvc的用法   1.pom配置 <dependency> <groupId>org.springframework.boot</gro ...

  6. py---------网络编程

    一.软件开发架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访 ...

  7. Python踩坑之旅其一杀不死的Shell子进程

    目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 坑后扩展 1.4.1 扩展知识 1.4.1 技术关键字 1.5 填坑总结 1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程 ...

  8. pat1035. Password (20)

    1035. Password (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To prepare f ...

  9. css中 repeat-x 的简单用法

    问repeat-x 00 中: 0 0 是 什么意思,如果改为0 -50呢,不写话默认是什么(不写话和0 0  的效果不一样)- ------<html><head><s ...

  10. elasticsearch远程代码执行漏洞告警

    es版本:1.7.2 最近在做es项目的时候出现,启动es一段时间系统就会报警,结果查询了一下,原来是es的漏洞: 官网描述: 大致意思就是: 漏洞出现在脚本查询模块,默认搜索引擎支持使用脚本代码(M ...