全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

在平常项目开发过程中,经常会遇到需要在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;
 }

测试效果:

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

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

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


# javascript  # 日期加减  # js获取几个月后的日期  # js比较日期相差几个月  # 超实用的javascript时间处理总结  # JavaScript中的时间处理小结  # JavaScript Serializer序列化时间处理示例  # 时间处理工具 dayjs使用示例详解  # 几个  # 一个月  # 实际情况  # 自己的  # 的是  # 我想  # 有个  # 却是  # 都能  # 两种  # 希望能  # 下一  # 要做  # 就得  # 前日  # 转化为  # 期中  # 最适合  # 经常会  # 推到 


相关文章: 如何登录建站主机?访问步骤全解析  建站之星如何助力网站排名飙升?揭秘高效技巧  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何在服务器上配置二级域名建站?  建站主机是什么?如何选择适合的建站主机?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  网站制作需要会哪些技术,建立一个网站要花费多少?  PHP 500报错的快速解决方法  广州美橙建站如何快速搭建多端合一网站?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  Android滚轮选择时间控件使用详解  动图在线制作网站有哪些,滑动动图图集怎么做?  招贴海报怎么做,什么是海报招贴?  实例解析angularjs的filter过滤器  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何在IIS中新建站点并解决端口绑定冲突?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  建站主机系统SEO优化与智能配置核心关键词操作指南  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何用西部建站助手快速创建专业网站?  如何在企业微信快速生成手机电脑官网?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  建站之星如何配置系统实现高效建站?  如何挑选优质建站一级代理提升网站排名?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何快速查询域名建站关键信息?  建站之星展会模版如何一键下载生成?  利用JavaScript实现拖拽改变元素大小  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站之星多图banner生成与模板自定义指南  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  临沂网站制作公司有哪些,临沂第四中学官网?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  建站之星好吗?新手能否轻松上手建站?  微信推文制作网站有哪些,怎么做微信推文,急?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  建站之星免费版是否永久可用?  C#如何使用XPathNavigator高效查询XML  建站之星微信建站一键生成小程序+多端营销系统  定制建站价位费用解析与套餐推荐全攻略  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  定制建站如何定义?其核心优势是什么?  网站按钮制作软件,如何实现网页中按钮的自动点击?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  制作企业网站建设方案,怎样建设一个公司网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。