2013-06-27 19 views
0

我想列出兩個日期之間等所有日期..上市日期(從 - >到)

list_dates('06/27/2013','07/31/2013'); 

該函數將返回2013年6月27日之間的所有日期 - 7月31日/ 2013數組一樣..

['06/27/2013','06/28/2013','06/29/2013','06/30/2013','07/01/2013','...so_on..','07/31/2013']; 

此功能將在所有情況下工作,如新舊版本,更新較舊,或同一日期如..

list_dates('06/27/2013','07/31/2013'); 
list_dates('07/31/2013','06/27/2013'); 
list_dates('07/31/2013','07/31/2013'); 

我做像...

function list_dates(a,b) { 
    var list = []; 
    var a_date = new Date(a); 
    var b_date = new Date(b); 

    if   (a_date > b_date) { 

    } else if (a_date < b_date) { 

    } else { 
     list.push(a); 
    } 

    return list; 
} 

演示:http://jsfiddle.net/fSGQ6/

可是如何才能讓兩個日期之間的日期?

+2

開始用較小的日期,將其推則[每日添加到它(HTTP:// stackoverflow.com/questions/563406/add-days-to-datetime-using-javascript)。如果它還小於或等於第二個日期(如果有時間分量,這可能會很棘手),然後重複。 – Rup

+1

_「但如何獲取日期之間的日期?」_ - 在一個循環中,添加1日/從您當前的日期減1天,並打破它,如果它是與您的結束日期相同的日期。 – CBroe

+1

mozilla將幫助https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date – NimChimpsky

回答

3

試試這個

list_dates('11/27/2013', '12/31/2013'); 
list_dates('03/21/2013', '02/14/2013'); 
list_dates('07/31/2013', '07/31/2013'); 

function list_dates(a, b) { 
    var list = []; 
    var a_date = new Date(a); 
    var b_date = new Date(b); 

    if (a_date > b_date) { 
     while (a_date >= b_date) { 

      var date_format = ('0' + (b_date.getMonth() + 1)).slice(-2) + '/' + ('0' + b_date.getDate()).slice(-2) + '/' + b_date.getFullYear(); 
      list.push(date_format); 
      b_date = new Date(b_date.setDate(b_date.getDate() + 1)); 
     } 
    } else if (a_date < b_date) { 
     while (b_date >= a_date) { 

      var date_format = ('0' + (a_date.getMonth() + 1)).slice(-2) + '/' + ('0' + a_date.getDate()).slice(-2) + '/' + a_date.getFullYear(); 
      list.push(date_format); 
      a_date = new Date(a_date.setDate(a_date.getDate() + 1)); 
     } 
    } else { 
     list.push(a); 
    } 

    console.log(list); 
} 

UPDATE:如海報要求

+0

不錯,所以謝謝,應該是'mm/dd/yyyy'格式:D – l2aelba

+0

您能標記爲答案:D –

+0

任何更簡單的方法來轉換成'mm/dd/yyyy'格式比'。 getDate()''.getMonth()+ 1'' getFullYear()'? – l2aelba

2
var start = new Date(2013,06,27); 
var end = new Date(2013,07,31); 
var result =[]; 
var loop = true; 

while(loop){ 
    console.log(start.toISOString); 
    result.push(start); 

    start.setDate(start.getDate()+1) 
    if(start>end){ 
    loop = false; 
    } 
} 
1
Date.prototype.getShortDate = function() { 
    // Do formatting of string here 
    return (this.getMonth() + 1) + "/" + this.getDate() + "/" + this.getFullYear(); 
} 

function list_dates(a, b) { 

    var a_date = new Date(a), 
     b_date = new Date(b), 
     list = [a_date.getShortDate()], 
     change = (a_date > b_date ? -1 : 1); 

    while (a_date.getTime() != b_date.getTime()) { 
     a_date.setDate(a_date.getDate() + change); 
     list.push(a_date.getShortDate()); 
    } 

    return list; 
} 
+0

+1這是如此短的編碼:D非常感謝 – l2aelba