2012-04-02 31 views
0

你好,我是想寫下面的函數來顯示7天一週的Javascript得到月()和GETDATE transions issuse

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]; 
} 

代碼工作,只要罰款,因爲它是下一個month.the前七天當用戶希望看到未來七日函數輸出錯誤信息 例如

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

會讓我出來的功能把下面我有問題

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

再次,這隻發生在過渡到下個月是有的,我可以這樣做使每個月的過渡工作,我的功能

回答

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); 
} 
+0

非常感謝你我一直在這個問題上停留的時間比我還長,而且沒有看到這段代碼對我來說非常清楚:p再次非常感謝你 – Triggs 2012-04-04 01:09:52

+0

@Triggs:沒問題。您可能希望[將此答案標記爲已接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#answers)。 – DCoder 2012-04-04 05:23:19

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]; 
} 

希望這能解決你的問題。

+0

感謝您的幫助,但對我來說這將創建一個新的問題。它只在同一天打印7次,每次迭代都沒有一天增加 – Triggs 2012-04-02 23:31:11

+0

嘿,我已經改變了答案,現在你使用這個功能,你會得到正確的答案 – AmGates 2012-04-03 05:28:32

+0

這將跳過夏時制。 – DCoder 2012-04-03 05:50:07