2011-05-19 55 views
2

我在尋找一個javascript函數,它將取一個日期值並告訴我接下來30天的值。查找接下來30天(javascript)

例如,如果當前日期是5 2011年8月 我希望它所有30天列出在此之後:

  • 2011年8月6日
  • 8月5日.... 。
  • 2011年9月3日

功能基本上負責的月份的日(30或31或28等)

這是我能輕易解決的問題嗎? 非常感謝您的幫助。

回答

7

您可以使用for循環並編寫new Date(year, month - 1, day + i)

Javascript Date構造函數會將超出範圍的日期標準化爲正確的值,所以這將完全按照您的要求進行。
您需要編寫month - 1,因爲月份基於零。

下面是這個(JSFiddle)代碼:

var today = new Date(); 

var year = today.getFullYear(); 
var month = today.getMonth(); 
var date = today.getDate(); 

for(var i=0; i<30; i++){ 
     var day=new Date(year, month - 1, date + i); 
     console.log(day); 
} 
+0

謝謝,非常有用:)這就是我正在尋找的。 – ssdesign 2011-05-19 17:32:41

1

快速回答:使用Date.js。例如,你可以做new Date("today + 30 days");,它會理解:]這是一個非常棒的圖書館,我用於日期功夫的很多項目...

0

如果我正確地理解你,那麼你可能想要類似這樣的:

var nextXDays = function (days) { 
    var today = new Date(); 
    var days = []; 
    var day_length = 1000 * 60 * 60 * 24; //the length of a day in milliseconds 
    for(var i = 0; i < days; i++) { 
     days.push(today + day_length*i); 
    } 
} 
var days = nextXDays(30); //return an array of the dates 

然後,因爲你有Date對象的數組,你可以在任何你喜歡的格式顯示出來。

+0

這不起作用,而不是新的Date(),你需要Date.now(),當你添加你需要新的日期(今天+ day_length *我) – 2014-04-29 15:05:24

0
var date=new Date(); 
document.write(date); 
document.write("<br>"); 

for (var x=0;x<40;++x) 
{ 
    var d=date.getDate(); 
    date.setDate(d+1); 
    document.write(date); 
    document.write("<br>"); 
} 

你想使用內置的日期功能。不要嘗試添加24 * 60 * 60 * 1000毫秒來到第二天。這假定每天都是24小時,這是不正確的。考慮夏令時開始和結束的日子。