首先, 大致思路为:
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;
- };
- View Code
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;
- };
- View Code
来源: https://www.cnblogs.com/mengbing/p/10135497.html