Javascript getMonth()和getDate转换问题

时间:2012-04-02 09:56:08

标签: javascript

您好我正在尝试编写以下函数来显示一周中的7天

function displaydates(){
// read the string output from the datepicker and
    //evalutes which date goes  into which cell

var date = document.getElementById("datepicker"); // Mon APR 30 2012 HH:MM:SS

var m = new Date(date.value);
var num = parseInt(m.getDate());
    var i = 0;
    var days=[];
    var x;
    for(i; i<=6; i++){
        var day= m.setDate(num+i);
        var month = m.setMonth(m.getMonth());
        x = m.getMonth()+1 + "/" + m.getDate() + "<br />";
        days.push(x);
    }
       document.getElementById("Monday").innerHTML= days[0];
       document.getElementById("Tuesday").innerHTML=days[1];
       document.getElementById("Wednesday").innerHTML=days[2];
       document.getElementById("Thursday").innerHTML=days[3];
       document.getElementById("Friday").innerHTML=days[4];
       document.getElementById("Saturday").innerHTML=days[5];
       document.getElementById("Sunday").innerHTML=days[6];
}
只要在下个月前七天,代码就能正常工作。我遇到的问题是,当用户想要查看接下来的七天时,该功能会输出错误的信息 例如

var m = new Date("Apr 30 2012"); / /monday

将使我的功能输出如下

4 / 29,5 / 30,7 / 1,9 / 1,11 / 2,1 / 3,3 / 7

再次,这只发生在转换到下个月的时候,我可以做的事情是让我的功能中的月到月转换工作

2 个答案:

答案 0 :(得分:0)

请使用以下提供的解决方案

function displaydates(){
// read the string output from the datepicker and
    //evalutes which date goes  into which cell

var date = document.getElementById("datepicker"); // Mon APR 30 2012 HH:MM:SS

var m = new Date(date.value);
var num = m.getTime();
    var i = 0;
    var days=[];
    var x;
    for(i; i<=6; i++){
        num+=86400000;    //Edited Part
        m = new Date(num);
        var day= m.getDate();
        var month = m.getMonth();
        x = month+1 + "/" + day + "<br />";
        days.push(x);
    }
       document.getElementById("Monday").innerHTML= days[0];
       document.getElementById("Tuesday").innerHTML=days[1];
       document.getElementById("Wednesday").innerHTML=days[2];
       document.getElementById("Thursday").innerHTML=days[3];
       document.getElementById("Friday").innerHTML=days[4];
       document.getElementById("Saturday").innerHTML=days[5];
       document.getElementById("Sunday").innerHTML=days[6];
}

希望这能解决你的问题。

答案 1 :(得分:0)

例如,当您致电setDate(32)时,JavaScript会发现需要额外一个月并将其添加到日期。当您稍后致电setDate(33)时,它会再次增加一个月......

此解决方案可能效果更好(某些部分被省略):

var start = new Date();
var days = [];
for(var i = 0; i <= 6; ++i) {
    var str = (start.getMonth() + 1) + '/' + start.getDate() + '<br />';
    days.push(str);
    start.setDate(start.getDate() + 1);
}