2014-10-28 40 views
1

在過去的幾天裏,我一直在迭代一系列日期。我正在使用下面的一段代碼來測試:通過JavaScript中的日期範圍迭代

var current_date = new Date("2014-08-01"); 
var end_date = new Date("2014-10-31"); 
var end_date_time = end_date.getTime(); 

while (current_date.getTime() <= end_date_time) { 
    document.write(current_date + '<br>'); 
    current_date.setDate(current_date.getDate()+1); 
} 

對我來說它看起來是正確的,但有一個問題。它缺少最後一天。我正在轉換此代碼,使用for循環,在循環中定義新的Date以及您可以想象的所有事物。有一樣東西保持不變。最後一天失蹤!

在好奇心的我用下面的格式創建日期:

var current_date = new Date("08/01/2014"); 
var end_date = new Date("10/31/2014"); 

讓我吃驚,它的工作如預期。現在我想知道這是一個正常行爲還是日期錯誤?

我會很感激,如果有人能夠啓發我。

回答

0

,這是因爲有時間上的變化,檢查第一天是在格林尼治標準時間夏令時和(GMT標準時間)的持續

讓你的代碼更好地使用UTC

var current_date = new Date("2014-08-01"); 
current_date = new Date(current_date.getUTCFullYear(), current_date.getUTCMonth(), current_date.getUTCDate(), current_date.getUTCHours(), current_date.getUTCMinutes(), current_date.getUTCSeconds()); 
var end_date = new Date("2014-10-31"); 
end_date = new Date(end_date.getUTCFullYear(), end_date.getUTCMonth(), end_date.getUTCDate(), end_date.getUTCHours(), end_date.getUTCMinutes(), end_date.getUTCSeconds()); 
var end_date_time = end_date.getTime(); 


while (current_date <= end_date) { 
    document.write(current_date + '<br>'); 
    current_date.setDate(current_date.getDate()+1); 
} 
+0

時間上的變化意味着日期功能的變化?我願意接受你的回答。但是,你能解釋一下爲什麼它使用上述格式'd/m/Y'並且在使用'Y-m-d'時失敗了嗎?不要誤會我的意思,我不挑剔。我只想知道爲什麼事情就像他們一樣。 – Nexo 2014-10-28 13:08:22

+0

對不起,我不能幫你。我從經驗中學習到,使用日期時,使用utc並以格式/時區渲染必須。 – dariogriffo 2014-10-28 14:02:30