首页 > 其他 > 详细

Date.prototype.getMonth 排坑

时间:2021-01-29 16:37:47      阅读:21      评论:0      收藏:0      [点我收藏+]

现象

function myFunction(){
  var d = new Date()
  d.setMonth(1)
  console.log(d.getMonth())
}

上面这段代码,正常来说期待输出值是 1(代表二月),但是有些情况下输出值是 2(代表三月)。

原理

根据 MDN 中的描述:

Date.prototype.setMonth 语法如下

dateObj.setMonth(monthValue[, dayValue])

如果不指定 dayValue 参数,就会使用 getDate 方法的返回值。如果有一个指定的参数超出了合理范围,setMonth 会相应地更新日期对象中的日期信息。例如,为 monthValue 指定 15,则年份会加 1,月份将会使用 3。

分析

虽然上面只举例了月份超出的情况,但是可以举一反三推出日期超出合理范围时,月份会加 1。

月份操作的范围是 0-11,也就是说在上面的代码里,我们设置的是 1(代表二月)。而当前日期如果超过了二月的日期上限,例如 30(二月没有 30 号),月份就会进位2(代表三月),所以 getMonth 时得到的索引就是 2(代表三月) 了(再次明确,月份操作的范围是 0-11)。

Date.prototype.getMonth 排坑

原文:https://www.cnblogs.com/phinixsdsd/p/14345470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!