Javascript getDay方法返回错误的数字

时间:2013-11-28 08:27:19

标签: javascript

这是我在浏览器和node.js(类似)中测试的一个小的html / javascript。你可以看到最后一行不一样(我不知道,也许只在我的机器上)。也许javascript代码通常有问题,或者我做错了什么?

HTML

<p id="demo"></p>
<button onclick="myFunction()">Try it</button>

脚本

function myFunction()
{
    var strng="";
    for (var i=25;i<32;i++){
        var d = new Date();
        d.setFullYear(2013, 11, i);
        var dt = new Date();
        dt.setDate(i);
        dt.setMonth(11);    
        dt.setYear(2013);
        strng += d.toLocaleDateString() + "  -  " + d.getDay() + " : " + dt.getDay() +" <br>";   
    }
    var x = document.getElementById("demo");
    x.innerHTML=strng;
}

2 个答案:

答案 0 :(得分:6)

如果您在月份之前设置日期,您将获得最后一个日期12月1日。 这是因为new Date()从今天(28.Nov)返回当前日期。 由于11月只有30天,setDate(31)会将日期设置为12月1日而不是31日

我首先提出错误的问题,但为了完整起见,我也会在这里保留这个答案:

要获得必须使用getDate()的那一天,这将返回您想要的月份的那一天。

getDay()返回错误的数字,因为它用于获取星期几。 (星期六像6)

答案 1 :(得分:2)

问题是在dt.setDate(i)之前调用dt.setMonth(11)时,如果您将这些行反转,则效果很好...这是因为当前月份的new Date()返回日期是11月且只有30天,因此当您将日期设置为31时,它将更改为12月1日,因此您要比较不同的星期几天:12月1日和12月31日