js指定日期增加指定月份的实现方法


Posted in Javascript onDecember 19, 2018

前言

本文主要给大家介绍的是关于js实现指定日期增加指定月份的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

首先,大致思路为:

     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;
 };

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
ES6关于Promise的用法详解
May 07 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
基于D3.js实现时钟效果
Jul 17 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
Nov 08 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
JavaScript数组reduce()方法的语法与实例解析
Jul 07 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 #Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 #Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 #Javascript
JS监听滚动和id自动定位滚动
Dec 18 #Javascript
JS实现的tab页切换效果完整示例
Dec 18 #Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 #Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 #Javascript
You might like
JSON在PHP中的应用介绍
2012/09/08 PHP
php获取微信openid方法总结
2019/10/10 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
详解Python当中的字符串和编码
2015/04/25 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Python识别验证码的实现示例
2020/09/30 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
学习雷锋精神心得体会范文
2014/03/12 职场文书
个人综合鉴定材料
2014/05/23 职场文书
质量月口号
2014/06/20 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers