Javascript日期对象的月份编号不一致



我对JS中的日期感到困惑。。。据我所知,月份编号为0-11,sa创建

var x = new Date(2014, 2, 1)

将给我3月1日。但是创建var x = new Date(2014, 2, 0)会得到二月,所以x.getDate()不会给我三月的天数,而是二月的天数。。。如果它的数字是2(从0开始计算),这应该返回三月吗?

还有没有一种方法可以在getDay()方法中将星期一设置为一周的第一天?

月份范围从0到11.0是一月,其中一个月的日期以1开始,所以如果在天中使用0,它会给出前几个月的最后一天。所以在你的情况下,你应该使用

var x = new Date(2014, 1, 1) // for  1st feb 2014

您可以将周初更改为Monday,如下所示

Date.prototype.mGetDay = function() {
  return (this.getDay() + 6) %7;
}

有关

的详细信息,请参阅本文

如果您已经接受了以0开头的月份,这并不矛盾,但有点奇怪:

new Date(2014, 2, 1) //1st of March
new Date(2014, 2, 0) //28th of February
new Date(2014, 2, -3) //25th of February
new Date(2014, -2, -3) // 28th of October of 2013

因此,它需要一年,然后加上一个月(如果为负数,则减去),然后对

的天数进行同样的处理

这并不矛盾。月份使用整数值表示,"1月从0开始,12月从11开始。"

"getDate()"也不会给出天数,但是"根据当地时间返回指定日期的月份(1-31)。"

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

最新更新