2014-10-02 4 views
2

자바 스크립트에서 MySQL 형식의 두 날짜 사이의 날짜 목록을 가져 오는 방법이 있습니다. 나는 이것을 위해 어떤 라이브러리도 사용하고 싶지 않다. 이것은 내가 한 일입니다.자바 스크립트를 사용하여 두 날짜 사이의 날짜 목록 가져 오기

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')); 

나는 아래에서 크롬과 노드를 테스트합니다.

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

예 큰 도약 연도 : -D ... 어떻게 수정해야합니까? 또는 더 좋은 방법이 있습니다.?

+6

개월은 JavaScript 날짜로 0부터 번호가 매겨집니다. 2 월은 2 월이 아니라 3 월입니다. – Pointy

+0

@Pointy 와우 감사합니다. – Oshanz

답변

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

관련 문제