2016-07-15 2 views
0

node.js 특정 간격의 날짜 범위 내에서 날짜를 가져와야합니다.node.js를 사용하여 두 날짜 사이의 날짜 가져 오기

startDate:2016-07-10T00:00:00.000Z, 
payByDate:"13"(13th of every month); 
endDate:2016-10-08T00:00:00.000Z 

나는이 두 날짜 사이에 매월 또는 매주 간격의 날짜의 배열을 필요

두 날짜를 생각해 보자.

내 결과되어야한다 (월간 갭)

[2016-07-13T00:00:00.000Z, 
2016-08-13T00:00:00.000Z, 
2016-09-13T00:00:00.000Z] 

EDIT : 내 STARTDATE가 2016-07-10T00:00:00.000Z이다 그래서 endDate가-STARTDATE를 사용 noOfmonths을 계산할 수 있지만, 배열 엔트리 payByDate으로해야한다.

나는 MOMENT.JS을 사용하고 있지만 그 날짜는 noOfMonths이 아닙니다. 아이디어를 공유하십시오. 미리 감사드립니다.

이제 위의 배열을 계산할 수 있습니다. "payByDate"는 문자열입니다.

+0

2016-01-31과 2016-03-31 사이의 월 간격은 얼마입니까? 그리고 2015-01-31과 2015-03-31 사이에? – RobG

답변

0

두 번째 날짜에 도달 할 때까지 manipulate method in moment.js을 사용하여 시작 날짜에 한 달 추가하십시오.

이 코드를 고려하십시오. 첫 번째 날짜와 마지막 날짜가이 함수에 전달 될 때 이미 있다고 가정하면 diff 및 조작 메소드를 사용하여 두 개의 다른 날짜 사이에 월 배열을 생성 할 수 있습니다.

EDIT :

function monthsBetween(payByDate, startDate, lastDate) { 
    var months = []; 

    //finds nearest date to the start date that is on the payByDate 
    var currentDate = startDate.date(parseInt(payByDate)); 

    //checks if the date is after the startDate and adds a month if it is 
    if(!currentDate.isSameOrAfter(startDate)){ 
    currentDate = currentDate.add(1, 'months'); 
    } 

    while (currentDate.isSameOrBefore(lastDate)) { 
    months.push(currentDate); 
    currentDate = currentDate.add(1, 'months'); 
    } 

    return months; 
} 
+0

댓글이되어야합니다. 대답이 아닙니다. – RobG

+0

@RobG 대표로 인해 아직 커밋 할 수 없습니다. (동의합니다.하지만 댓글이되어야합니다.) – Hopeless

+0

@Hopeless thanks .. 내 편집 된 게시물을 참조하십시오. – Subburaj

0

당신은 당신의 날짜의 월을 얻을 getMonth() 기능을 사용할 수 있습니다. 끝 날짜에 도달 할 때까지 계속 추가하십시오.

var arrayDates = []; 
arrayDates.push(startDate); 
var tempDate = new Date(new Date(startDate).setMonth(startDate.getMonth()+1)); 
while(tempDate < endDate) 
{ 
    arrayDates.push(tempDate); 
    var tempDate = new Date(new Date(tempDate).setMonth(tempDate.getMonth()+1)); 
} 

Abouve 논리는 월 간격으로 작동합니다. 주간 간격의 배열을 얻으려면 getDate() 함수를 사용하고 마지막에 도달 할 때까지 7을 계속 추가하십시오. 날짜

+0

2016-01-31에 한 달 더하면 2016-03-02가 주어집니다. 예기치 않은 경우가 있습니다. – RobG

+0

@Avantika Saini 감사합니다. 내 편집 된 게시물을 참조하십시오. – Subburaj

+0

@RobG 예, 맞습니다. 코드를 테스트 한 결과 2 월에 제대로 작동하지 않는다는 것을 알았습니다. –

관련 문제