详解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代码
Oct 30 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
深入理解Promise.all
Aug 08 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
使用百度地图实现地图网格的示例
2018/02/06 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python反编译学习之字节码详解
2019/05/19 Python
python实现QQ批量登录功能
2019/06/19 Python
python新手学习可变和不可变对象
2020/06/11 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
几道Java和数据库的面试题
2013/05/30 面试题
毕业生自荐书
2014/02/02 职场文书
新教师岗前培训方案
2014/06/05 职场文书
师范类求职信
2014/06/21 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
政工师工作总结2015
2015/05/26 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript