Javascript日期对象在月份编号中的不一致性?

时间:2014-04-14 12:00:56

标签: javascript date datetime

我对JS中的约会感到困惑......据我所知,月份编号为0-11,创造了

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

会给我 3月1日。但是创建var x = new Date(2014, 2, 0) 会给二月,所以x.getDate()不会给我三月的天数,而是二月份...如果它的数量相当于这个天数是2(数字从0开始)?

还有办法在getDay()方法中将星期一设置为星期的第一天吗?

3 个答案:

答案 0 :(得分:2)

如果你已经接受从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 :(得分:2)

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

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

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

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

请参阅此文章以了解details

答案 2 :(得分:0)

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

同样``getDate()'不会给你天数,但是 “根据当地时间返回指定日期的月中某天(1-31)。”

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