2014-10-02 140 views
2

JavaScript中有一种方法可以从MySQL格式获取两个日期之间的日期列表。我不想为此使用任何库。 这就是我所做的。使用javascript获取两个日期之间的日期列表

function generateDateList(from, to) { 

    var getDate = function(date) { //Mysql Format 
     var m = date.getMonth(), d = date.getDate(); 
     return date.getFullYear() + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d); 
    } 
    var fs = from.split('-'), startDate = new Date(fs[0], fs[1], fs[2]), result = [getDate(startDate)], start = startDate.getTime(), ts, end; 

    if (typeof to == 'undefined') { 
     end = new Date().getTime(); 
    } else { 
     ts = to.split('-'); 
     end = new Date(ts[0], ts[1], ts[2]).getTime(); 
    } 
    while (start < end) { 
     start += 86400000; 
     startDate.setTime(start); 
     result.push(getDate(startDate)); 
    } 
    return result; 
} 

console.log(generateDateList('2014-2-27', '2014-3-2')); 

我测试它从铬和nodejs下面是结果。

[ '2014-02-27', 
    '2014-02-28', 
    '2014-02-29', 
    '2014-02-30', 
    '2014-02-31', 
    '2014-03-01', 
    '2014-03-02' ] 

yeh大闰年:-D ...,我该如何解决这个问题?还是有更好的办法。?

+6

几个月的JavaScript日期从0开始编号。 02月份是3月份,而不是2月份。 – Pointy 2014-10-02 15:15:21

+0

@点好哇谢谢。 – Oshanz 2014-10-02 15:31:54

回答

0
var listDate = []; 
var startDate ='2017-02-01'; 
var endDate = '2017-02-10'; 
var dateMove = new Date(startDate); 
var strDate = startDate; 

while (strDate < endDate){ 
    var strDate = dateMove.toISOString().slice(0,10); 
    listDate.push(strDate); 
    dateMove.setDate(dateMove.getDate()+1); 
}; 
+0

请添加更多关于您的答案的描述和/或信息,以及如何解决问题,以便其他人可以轻松理解,而无需澄清 – koceeng 2017-03-02 03:53:52

相关问题