详解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 相关文章推荐
JavaScript 模拟用户单击事件
Dec 31 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
May 20 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
微信小程序实现轮播图效果
Sep 07 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
vue项目使用.env文件配置全局环境变量的方法
Oct 24 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 Javascript
vue实现下拉菜单树
Oct 22 Javascript
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
详解前端自动化工具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作的文本留言本的例子(六)
2006/10/09 PHP
Email+URL的判断和自动转换函数
2006/10/09 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Python包,__init__.py功能与用法分析
2020/01/07 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
什么是python的必选参数
2020/06/21 Python
python给list排序的简单方法
2020/12/10 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
医生自荐信
2013/10/11 职场文书
教师的实习鉴定
2013/12/15 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
慈善晚会策划方案
2014/05/14 职场文书
化妆品活动策划方案
2014/05/23 职场文书
大型公益活动策划方案
2014/08/20 职场文书
小学教师师德整改措施
2014/09/29 职场文书
三峡导游词
2015/01/31 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
任命书格式范文
2015/09/22 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书