2014-05-13 41 views
1

我有數組的一些日期:JavaScript的日期 - 3天

periods[i].start 
periods[i].ende 

起初我填充開始日期。然後,我想計算結束日期,就像這樣:

periods[i].ende = periods[i+1].start - 1 day 

這工作:

periods[i].ende = periods[i+1].start; 

但如何做到:-1一天?

謝謝!

編輯:它不是this的重複。方法setDate適用於像YOURDATE這樣的單個變量,但不適用於像PERIODS [i] .ENDE之類的內容。差異 - 也許一個是參考,另一個是價值。再次

function finalizePeriods() { 
    var tempDay; 
    for(var i=0; i<periods.length - 1; i++) { 
    tempDay = new Date(periods[i+1].start); 
    tempDay.setDate(tempDay.getDate() - 1); 
    periods[i].ende = tempDay; 
    } 
} 

MBottens,感謝: 我用這個代碼!

+0

閱讀關於JavaScript日期對象。 –

+0

這是行不通的: 句點[i] .ende.setDate(句點[i] .ende.getDate() - 1); – my2c

回答

1

繼承人一種做法。這將設置每個結束日期,除了最後一個。由於沒有計算它的日期。

JS小提琴:http://jsfiddle.net/FGt4B/1/

var periods = [{start: "5/1/2014"}, {start: "5/8/2014"}, {start: "5/15/2014"}], 
    period, nextPeriod, tempDay 

for (var i = 0, _len = periods.length; i < _len; i++) { 
    period = periods[i] 
    nextPeriod = periods[i+1] 

    if (nextPeriod) { 
     tempDay = new Date(nextPeriod.start) 
     tempDay.setDate(tempDay.getDate() -1) 
     period.end = tempDay.toLocaleDateString() 
    } 
} 

console.log(periods) 
+0

那沒有回答這個問題。它的工作原理,但我沒有簡單的變量,如'天' – my2c

+0

'tempDay'工作!謝謝,MBottens! – my2c

0

一個建議可能是使用moment.js庫。然後只是

moment.subtract('days', 1);