详解JavaScript时间处理之几个月前或几个月后的指定日期


Posted in Javascript onDecember 21, 2016

在平常项目开发过程中,经常会遇到需要在JavaScript中处理时间的情况,无非两种(1,逻辑处理  2,格式转换处理)。当然要说相关技术博,园子里闭着眼睛都能抓一把,但是我要做的是:既然有幸被我碰到了,就要尽可能的分析转化为自己最适合自己的东西,成为自己知识库的一部分;同时希望能帮助有需要的同学解决遇到的相关小问题。

时间逻辑处理

此类型常用需求为:推算几个月后(前)的今天的日期。

/**
 *获取几个月前的输入日期
 *{param:DateTime} date 输入日期(YYYY-MM-DD)
 *{param:number } monthNum 月数
 */
 GetPreMonthDay: function (date,monthNum)
 {
  var dateArr = date.split('-');
  var year = dateArr[0]; //获取当前日期的年份
  var month = dateArr[1]; //获取当前日期的月份
  var day = dateArr[2]; //获取当前日期的日
  var days = new Date(year, month, 0);
  days = days.getDate(); //获取当前日期中月的天数
  var year2 = year;
  var month2 = parseInt(month) - monthNum;
  if (month2 <=0) {
   year2 = parseInt(year2) - parseInt(month2 / 12 == 0 ? 1 : parseInt(month2) / 12);
   month2 = 12 - (Math.abs(month2) % 12);
  }
  var day2 = day;
  var days2 = new Date(year2, month2, 0);
  days2 = days2.getDate();
  if (day2 > days2) {
   day2 = days2;
  }
  if (month2 < 10) {
   month2 = '0' + month2;
  }
  var t2 = year2 + '-' + month2 + '-' + day2;
  return t2;
 }
/**
 *获取下一个月的输入日期
 *{param:DateTime} date 输入日期(YYYY-MM-DD)
 *{param:number } monthNum 月数
 */
 GetNextMonthDay: function (date, monthNum)
 {
  var dateArr = date.split('-');
  var year = dateArr[0]; //获取当前日期的年份
  var month = dateArr[1]; //获取当前日期的月份
  var day = dateArr[2]; //获取当前日期的日
  var days = new Date(year, month, 0);
  days = days.getDate(); //获取当前日期中的月的天数
  var year2 = year;
  var month2 = parseInt(month) + parseInt(monthNum);
  if (month2 >12) {
   year2 = parseInt(year2) + parseInt((parseInt(month2) / 12 == 0 ? 1 : parseInt(month2) / 12));
   month2 = parseInt(month2) % 12;
  }
  var day2 = day;
  var days2 = new Date(year2, month2, 0);
  days2 = days2.getDate();
  if (day2 > days2) {
   day2 = days2;
  }
  if (month2 < 10) {
   month2 = '0' + month2;
  }

  var t2 = year2 + '-' + month2 + '-' + day2;
  return t2;
 }

测试效果:

详解JavaScript时间处理之几个月前或几个月后的指定日期

详解JavaScript时间处理之几个月前或几个月后的指定日期

发没发现有个问题,通过29日来推,前后都会是29。 1月31号推到二月就是2月29(因为2月就29天)。

那么这种逻辑对于有些需求来说就得根据实际情况变动一下。譬如:我想缴纳预存一个月的费用。当前我已经缴纳了2.1-2.29(2月一整月)的费用,预存一个月就应该是(3.1-3.31)。通过此逻辑得到却是3.1-3.29,所以使用请根据实际情况!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
比较搞笑的js陷阱题
Feb 07 Javascript
JavaScript 空位补零实现代码
Feb 26 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
javascript学习笔记之函数定义
Jun 25 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
Vue实现todolist删除功能
Jun 26 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
Element MessageBox弹框的具体使用
Jul 27 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 #Javascript
详解Vue.js动态绑定class
Dec 20 #Javascript
浅谈Angular的$q, defer, promise
Dec 20 #Javascript
BootStrapTable服务器分页实例解析
Dec 20 #Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 #Javascript
bootstrap多种样式进度条展示
Dec 20 #Javascript
JS封装通过className获取元素的函数示例
Dec 20 #Javascript
You might like
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python 移动光标位置的方法
2019/01/20 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
python实现最小二乘法线性拟合
2019/07/19 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
意外伤害赔偿协议书范文
2014/09/23 职场文书
就业协议书范本
2014/10/08 职场文书
董事长致辞
2015/07/29 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript