2014-05-13 28 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);