一、场景复现

业务需求,查询时间需要设置为前一个月。

//辅助代码
Date.prototype.format = function(fmt)
{ //author: meizz   var o = {   "M+" : this.getMonth()+1,                 //月份   "d+" : this.getDate(),                    //日   "h+" : this.getHours(),                   //小时   "m+" : this.getMinutes(),                 //分   "s+" : this.getSeconds(),                 //秒   "q+" : Math.floor((this.getMonth()+3)/3), //季度   "S"  : this.getMilliseconds()             //毫秒   };   if(/(y+)/.test(fmt))   fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   for(var k in o)   if(new RegExp("("+ k +")").test(fmt))   fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   return fmt;
}  //正式代码
let date = new Date("2019-3-29");
date.setMonth(date.getMonth()-1);
alert(date.format('yyyy-MM'));

输出:

2019-03

期待输出2019-02

二、分析原因

在业务寻找问题的时候,测试输出date.format('yyyy-MM-dd'),看到的值为2019-03-01。从2019-03-01中我发现了原因,是因为2019-02-29此天不存在,故输出2019-03-01,这才导致了输出2019-03的问题。

正确设置上个月份的的方式应该为date.setMonth(date.getMonth()-1,1);使用setMonth(month,date)来进行修改,而不是使用setMonth(month)方法,避免出现此类问题。

JS的Date.setMonth()方法坑相关推荐

  1. js Date 函数方法

    转载自   js Date 函数方法 var myDate = new Date();myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取 ...

  2. JS中 new Date() 各方法的用法

    JS中 new Date() 各方法的用法 1.new Date() 参数篇 a.返回类型为国标时间, b.无参数时可以直接返回输出时的时间, c.有参数时则返回对应时间的国标时间, d.日期中间的符 ...

  3. js中text方法是啥意识_一盏茶的时间,快速捕获JS中常用的方法(细心整理,持续更新ing)...

    不知不觉上班一周辽-趁着大好周末,小编挣扎着从床上爬起来,决定对前端日常编程中常用到的一些方法做一个系统的整合. 有些人或许会觉得忘了百度就完事儿,no no no!这事儿小编真的亲践过好多次,百度一 ...

  4. 获取JavaScript时间戳函数的方法和js时间戳转时间方法

    文章目录 一.JavasCRIPT时间转时间戳 方法一:Date.now() 方法三:valueOf() 方法四:getTime() 方法五:Number 二.js时间戳转时间 方法一:生成'yyyy ...

  5. JS学习--Date对象

    Date对象是 JavaScript 原生的时间库.它以1970年1月1日00:00:00作为时间的零点, 可以表示的时间范围是前后各1亿天(单位为毫秒). 一.普通函数的用法 Date对象可以作为普 ...

  6. JavaScript中的setMonth()方法的小问题 解决:setMonth(month, 1)

    今天测试人员发现一个问题,从英文日期转化中文日期,月份总会有"6月"变为"7月".于是我在本地反复测试,发现如下规律:只要setMonth()的参数为小于31天 ...

  7. 苹果ios用js的Date()出现NaN问题解决办法

    原文:苹果ios用js的Date()出现NaN问题解决办法 ios使用如下方法获得NaN,安卓手机则是正常计算,解决方法是换个这个时间的格式 new Date("2017-04-28 23: ...

  8. js入门·对象属性方法大总结

    数组(Array):系列元素的有序集合: 详细演示请看:[js入门系列演示·数组 ] http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.ht ...

  9. js常用字符串处理方法

    function getMonth(){var date = new Date();var month=date.getMonth()+1;//当前月份$.ajax({type:"GET&q ...

最新文章

  1. 如何用fiddler抓取HTTPS的详细教程(附fiddler安装教学)
  2. C#操作Excel(搜集)
  3. java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例
  4. laravel商品图片怎么展示_如何使用Laravel图片处理包intervention-image
  5. c语言编程算法精选,c语言经典程序算法【DOC精选】.doc
  6. c语言的局部指针,C中局部变量指针问题
  7. java获取某年度有多少周_java获取一年共有多少周
  8. element Descriptions 内容超出隐藏 Tooltip展示完整内容
  9. html特殊符号怎么输入法,特殊符号怎么打出来?电脑特殊符号输入方法
  10. 走进JavaWeb技术世界11:单元测试框架Junit
  11. 不知何时开学,接下来计划(罗勇军的浅谈程序设计竞赛的算法知识)
  12. 幼儿园观察记录的目的和目标_幼儿园观察目的是什么?
  13. [ScyllaHide] 04 ScyllaHide配置报错原因定位
  14. Redis之EXPIRE
  15. 谷歌浏览器怎么设置默认隐身模式启动
  16. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程
  17. 项目管理小小知识点总结
  18. java中ioc作用_Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
  19. 深度linux比ubuntukylin,linux ubuntukylin和deepin操作系统的比较及改进方向的建议
  20. 一张图认识URI和URL

热门文章

  1. java实用教程——组件及事件处理——DocumentEvent事件
  2. 135. 分发糖果002(贪心算法+思路+详解)
  3. 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析
  4. Java 源程序与编译型运行区别
  5. [C++STL]queue容器用法介绍
  6. 天梯赛模拟 链表去重 (25 分)
  7. 网络编程-TCP/IP协议栈-TCP协议
  8. java 导入导出 插件_Java最优的Excel导入/导出工具开发,你用过吗?
  9. /usr/lib/sudo/sudoers.so must be only be writable by owner
  10. Hibernate基础