全网整合营销服务商

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

免费咨询热线: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使用示例详解  # 几个  # 一个月  # 实际情况  # 自己的  # 的是  # 我想  # 有个  # 却是  # 都能  # 两种  # 希望能  # 下一  # 要做  # 就得  # 前日  # 转化为  # 期中  # 最适合  # 经常会  # 推到 


相关文章: C++如何使用std::optional?(处理可选值)  如何通过网站建站时间优化SEO与用户体验?  建站之星如何修改网站生成路径?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  Python lxml的etree和ElementTree有什么区别  c# 在ASP.NET Core中管理和取消后台任务  如何通过山东自助建站平台快速注册域名?  高端云建站费用究竟需要多少预算?  深圳网站制作案例,网页的相关名词有哪些?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  ui设计制作网站有哪些,手机UI设计网址吗?  如何在VPS电脑上快速搭建网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在自有机房高效搭建专业网站?  Swift中swift中的switch 语句  如何选择靠谱的建站公司加盟品牌?  如何选择服务器才能高效搭建专属网站?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  建站之星如何配置系统实现高效建站?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  5种Android数据存储方式汇总  c# 服务器GC和工作站GC的区别和设置  如何用虚拟主机快速搭建网站?详细步骤解析  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  西安专业网站制作公司有哪些,陕西省建行官方网站?  SQL查询语句优化的实用方法总结  如何彻底删除建站之星生成的Banner?  建站主机默认首页配置指南:核心功能与访问路径优化  建站org新手必看:2024最新搭建流程与模板选择技巧  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  黑客如何通过漏洞一步步攻陷网站服务器?  简单实现Android验证码  常州自助建站费用包含哪些项目?  建站之星价格显示格式升级,你的预算足够吗?  建站主机选购指南:核心配置优化与品牌推荐方案  建站之星2.7模板快速切换与批量管理功能操作指南  Swift中switch语句区间和元组模式匹配  山东网站制作公司有哪些,山东大源集团官网?  音乐网站服务器如何优化API响应速度?  如何用景安虚拟主机手机版绑定域名建站?  如何配置WinSCP新建站点的密钥验证步骤?  如何在阿里云服务器自主搭建网站?  活动邀请函制作网站有哪些,活动邀请函文案?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  代购小票制作网站有哪些,购物小票的简要说明?  建站之星CMS五站合一模板配置与SEO优化指南 

您的项目需求

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