起因

 今天收到需求要实现一个获取当前时间前一个月的日期,前两个月,前三个月,前一年,前两年日期时间的需求于是我就去网上找了个帖子,按照他给的方法小改一下,废话不多说直接上代码【注意目前不支持往后的时间日期,可以参考我这个来加shi山】

语法

this.getXmonthToday(-1) //获取当前时间前1个月的日期 2022-1124 获取到的是2022-10-24this.getXmonthToday(-10) //获取当前时间前10个月的日期this.getXmonthToday(-12) //获取当前时间前一年的日期this.getXmonthToday(-24) //获取当前时间前两年的日期this.getXmonthToday(-25) //获取当前时间前两年零一个月的日期 20022-110-24 获取到的是 2022-11-24

源码

封装方法

getXmonthToday(type) {// type 0 是当天 -1 是上个月   1是下个月var now = new Date(); // 可以传值调式 now = new Date(2019,2,30); 今天是3月30号var year = now.getFullYear(); //getYear()+1900=getFullYear()var month = now.getMonth() + 1; //0-11表示1-12月var day = now.getDate(); // 当天日期if (parseInt(month) < 10) {month = '0' + month;}if (parseInt(day) < 10) {day = '0' + day;}now = year + '-' + month + '-' + day; // 如果取当月日期可直接 return 返回let msum = Math.abs(type); // console.log(parseInt(msum / 12))var preMonth  = 0;  //月值let preSizes = 0; //上月总天数if(parseInt(msum / 12) === 1){//一年console.log("一整年")preMonth = parseInt(month);if(parseInt(month) === 12){preSizes =  new Date(year-1, parseInt(month), 0).getDate();if(day > preSizes){console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)return parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes;}else{     console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)return parseInt(year) - 1 + '-'+ preMonth +'-' + day;}}else{console.log("********")preSizes =  new Date(year-1, parseInt(month), 0).getDate();console.log(preSizes)preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值    if(parseInt(day) > preSizes){console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)return parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)return parseInt(year) - 1 + '-'+ preMonth +'-' + day;}}}else if(parseInt(msum / 12) > 1){//两年,三年// console.log("两年")preMonth = parseInt(month);if(parseInt(month) === 12){console.warn(preMonth)preSizes =  new Date(year-1, parseInt(month), 0).getDate();if(day > preSizes){console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + day;}}else{// console.log("********")preSizes =  new Date(year - parseInt(msum / 12), parseInt(month), 0).getDate();console.log(preSizes)console.log(Math.abs(msum) % 12)if(Math.abs(msum) % 12 === 0){console.log("整年")preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值if(parseInt(day) > preSizes){console.warn(parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + preSizes)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + day)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + day;}}else{console.log(Math.abs(msum) % 12)console.log("两年多")preMonth = parseInt(preMonth-(Math.abs(msum) % 12));preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值if(parseInt(day) > preSizes){console.warn(parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + preSizes)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + day)return parseInt(year) - parseInt(msum / 12)  + '-'+ preMonth +'-' + day;}}}// return parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + preSizes;}else{console.log("小于一年")//小于一年      // preMonth = parseInt(month);   console.log(msum)console.log(preMonth)                  // console.warn(preMonth)if(parseInt(month) === msum){preMonth = parseInt(month) + 1;  preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值preSizes =  new Date(year-1, parseInt(month), 0).getDate();if(day > preSizes){return parseInt(year) - 1  + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year) - 1  + '-'+ preMonth +'-' + day)return parseInt(year) - 1  + '-'+ preMonth +'-' + day;}}else{preSizes =  new Date(year, parseInt(month), 0).getDate();preMonth = parseInt(month) - msum;preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值if(day > preSizes){console.warn(parseInt(year)  + '-'+ preMonth +'-' + preSizes)return parseInt(year)  + '-'+ preMonth +'-' + preSizes;}else{console.warn(parseInt(year)  + '-'+ preMonth +'-' + day)return parseInt(year)  + '-'+ preMonth +'-' + day;}}}        },

程序员必备技能

有bug勿喷,可以再品论区回复

JS获取当前前一个月的日期,前两个月的日期相关推荐

  1. js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间

    js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间 1.一天前 var dateStr = new Date(); dateStr.setDate(dateStr.getDat ...

  2. 苹果股价上月大跌25.6美元 几乎抹去前两个月涨幅

    [TechWeb]6月3日消息,据国外媒体报道,连续两个月上涨的苹果股价,在刚刚过去的5月份却不甚理想,该月其股价大跌25.6美元,几乎抹去了前两个月的涨幅. 5月份美国股市最后一天,也就是上周五美国 ...

  3. C语言:输入某年某月某日,判断这一天是这一年的第几天? 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

    以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天. 首先画下设计流程图: 源程序: #include<stdio.h> ...

  4. JS获取本周、本季度、本月、上月的开端日期、停止日期

    Js代码 /** * 获取本周.本季度.本月.上月的开端日期.停止日期 */ var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); ...

  5. JS获取本周、本季度、本月、上月的开始日期、结束日期

    /** * 获取本周.本季度.本月.上月的开始日期.结束日期 */ var now = new Date();                    //当前日期 var nowDayOfWeek = ...

  6. mysql前两个月_MySQL数据库表始终保持最近两个月的记录

    实现自动备份的方法很多,这里说的是客户需要始终保持某个表中存储两个月的记录,以便保持性能.过期数据我们建议存储到另外一个表中,以备以后查询使用. 我们采用存储过程+linux Crontab的方式实现 ...

  7. 使用互联网了解的两个月里_我两个月来对Quarkus的了解

    使用互联网了解的两个月里 又一年,另一个来临,我很荣幸再次开启围绕Java,语言,生态系统和朋友的24篇精彩博客文章的统治,这些博客文章将我们所有人带入了今年最安静的假期. 这已经是第五年了(我只错过 ...

  8. 获取前两个月,上个月的开始日期和结束日期

    function newdate(a) { var date = new Date() var daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30 ...

  9. JS 获取输入时间的前一年、前三个月

    通过 getFullYear 获取输入时间的年限,再使用 setFullYear 设置年限. // 获取输入时间的上一年 export function getLastTime(localdate) ...

最新文章

  1. 服务器架设笔记——使用Apache插件解析简单请求
  2. 用Windows Live Writer发布博客也可以不生成缩略图
  3. Vue实现仿音乐播放器13-实现音乐榜单跳转显以及播放效果
  4. 数据结构 - 树(二叉树的 前序、中序、后序 遍历)
  5. ProtoBuf3语法指南(Protocol Buffers)_上
  6. mybatis-plus排除非表中字段
  7. 清空数据库中的某个表中数据
  8. css的部分应用示例
  9. volatile的总结
  10. 第四届全国大学生GIS应用技能大赛开发题答案(非官方)
  11. 物联网无线技术蓝牙和WiFi的区别有哪些?
  12. 【OpneWRT】编译ipk
  13. knx智能照明控制系统电路图_智能照明KNX灯控软件
  14. 三天打鱼两天晒网问题
  15. Lucene.Net的简单练习
  16. ftp、sftp利用bat脚本自动下载以及上传文件
  17. 一种应用于档案馆档案库房的三维可视化温湿度监控系统平台
  18. Android 点击按钮带有震动效果,使用Vibrator
  19. c/c++: window下安装mingw-w64
  20. 天猫精灵 python_天猫精灵控制ESP8266(Django+micropython)第一节

热门文章

  1. 用Multisim仿真设计有源、无源,二阶、四阶滤波器
  2. 信息学奥赛对大学计算机专业,区别大盘点:信息学竞赛、信息学奥赛、NOI和IOI傻傻分不清楚...
  3. 手机输入法带拼音声调_word中拼音横向设置
  4. SSH (安全shell 协议)
  5. CAD软件 CAD控件 CAD三维控件 CAD手机平板控件。
  6. Hdoj 2635 Dragon Balls
  7. openstack冷迁移/Resize源码分析(二)
  8. js实现问卷星根据答案自动填写2019年11月
  9. C++读取bmp格式图片
  10. 免费个人数据备份软件介绍:FreeFileSync、Syncthing