2017-04-10 27 views
-2

我想顯示兩個days.I之間的所有日期不能做this.Please幫助.. 這是我的代碼兩個日期範圍之間的所有日期...顯示在JavaScript

var Day = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
var firstDate = new Date("2017-04-10"); 
var secondDate = new Date("2017-04-15"); 

var diffDays = (secondDate.getTime() - firstDate.getTime())/Day; 
alert(diffDays); 
for(var i=0;i<= diffDays ;i++) 
{ 
    var d = new Date(firstDate + i); 
    alert(d); 
} 
+1

請看看您的瀏覽器控制檯:它會在您的代碼中顯示語法錯誤和引用錯誤的詳細信息。修復這些代碼並且代碼將會運行,儘管你不應該有一個叫'Date'的變量,因爲已經有'Date'函數了,但是在顯示的代碼中你實際上並沒有對結果日期做任何事情 - 它們應該在哪裏被顯示? – nnnnnn

+0

編輯我的代碼。但它顯示的第一個日期只有不增加日期 –

+0

當有疑問發生了什麼,採取嬰兒的步驟。如果將'firstDate + i'分配給變量並檢查,在使用結果值創建新日期之前,解決問題的方法應該是微不足道的。 – migueldiab

回答

1

i變量是當天顯示的號碼。您的firstDate變量是Date

這條線:

var d = new Date(firstDate + i); 

一起將這些並嘗試建立一個新的Date。由於這些是不同的類型(一個日期和一個數字),類型強制就起作用了(即:日期和數字被轉換爲字符串,並連接在一起)。

試試這個:

var DAY_IN_MS = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds 
var theDate = new Date("2017-04-10"); 
var i = 5; 

// Date + Number = Type Coercion! Both objects will be converted to strings and concatenated together. 
alert(theDate + i); 

// The Date constructor doesn't care, and will work because it can get a date from the first part of the string. 
alert(new Date(theDate + i)); 

// If you use `getTime()` you can get the numerical value of the Date, which you can use for arithmetic. 
alert(theDate.getTime()); 

// By adding `i`, however, you are only adding a few milliseconds to the first date !! 
alert(new Date(theDate.getTime() + i); 

// Number + Number of days times milliseconds per day = success! 
alert(new Date(theDate.getTime() + (i * DAY_IN_MS))); 

我想你的意思:

var d = new Date(firstDate.getTime() + (i * Day)); 
+0

我附上上面的代碼,但它不工作。只顯示第一次約會 –

+0

對不起,我錯過了什麼。嘗試這個。 –

+0

好的解釋,但是應該做一個日期[*因此*](http://stackoverflow.com/questions/9989382/add-1-to-current-date),因爲不是所有的日子都是24小時長的日光觀察到節約。 ;-) – RobG

0

簡短的回答,增加毫秒適量firstDate.getTime()

for(var i=0;i<= diffDays ;i++) 
{ 
    firstDate = new Date(firstDate.getTime() + Day); 
    console.log(firstDate); 
} 

朗的答案,你有您的代碼中有幾處錯誤:

  1. 這裏var d = new Date(firstDate + i);您正在向Date對象字符串表示添加i的值,在這種情況下,該值在循環中遞增。

  2. 然後,您解析這個字符串變成一個新的Date對象,但使用Javascript只能識別的日期,而忽略附加數

您應該嘗試像你一樣的diffDays得到的firstDate毫秒然後添加i * Day(也考慮將此變量重命名爲其他內容,也許是const DAY_IN_MS或其他)。