2016-07-15 125 views
0

node.js我需要在特定間隔的日期範圍內獲取日期。使用node.js獲取2個日期之間的日期

考慮兩個日期:

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

我需要這2日期間每月或每週差距日期的數組。

我的結果應該是:(每月間隙)

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

編輯: 我STARTDATE是2016-07-10T00:00:00.000Z,所以我可以計算使用結束日期-STARTDATE的noOfmonths,但陣列條目應該是由payByDate

我正在使用MOMENT.JS,但它只返回noOfMonths而不是日期。請分享你的想法。提前致謝。

現在有可能計算出Above數組。請注意「payByDate」是字符串。

+0

什麼是2016年1月31日和2016年3月31日之間的每月差距? 2015-01-31和2015-03-31之間? – RobG

回答

0

嘗試使用manipulate method in moment.js將第一個月添加到開始日期,直到達到第二個日期。

請考慮這段代碼。假設第一個日期和最後一個日期已經是它們傳遞到此函數的時刻,那麼可以使用diff和操作方法在兩個不同日期之間按月創建一個日期數組:

編輯:

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不能commet但因爲代表的:(我同意,這應該是一個評論,但。 – Hopeless

+0

@Hopeless thanks..Please看到我的編輯職位.. – 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年1月31日加上一個月給2016年3月2日,這可能是意想不到的。 – RobG

+0

@Avantika賽尼謝謝..請看到我的編輯職位。 。 – Subburaj

+0

@RobG是的,我剛剛測試了代碼,發現它在2月份無法正常工作 –

相關問題