这是我在浏览器和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;
}
答案 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日