将prev和next小时添加到数组中

时间:2013-11-25 18:38:07

标签: javascript jquery

我有几小时的数组:

var hours = ['12:00:00', '12:30:00', '13:00:00'];

如何在30分钟内添加上一个和下一个小时?我想收到:

var hours = ['11:30:00', '12:00:00', '12:30:00', '13:00:00', '13:30:00'];

最好的方法是什么?我可以使用jQuery。

这只是一个例子,我想为每个数组添加prev和next。我也举个例子:

var hours2 = ['14:00:00', '14:30:00', '15:00:00', '15:30:00'];
var hours3 = ['11:00:00', '11:30:00'];

所以我不知道数组中的值 - 我必须先检查并添加prev并检查最后一个并添加下一个。

4 个答案:

答案 0 :(得分:2)

只需将元素添加到背面并对其进行排序:

var hours = ['12:00:00', '12:30:00', '13:00:00'];
hours.push('11:30:00')
hours.push('13:30:00')
hours.sort()
// ["11:30:00", "12:00:00", "12:30:00", "13:00:00", "13:30:00"]

答案 1 :(得分:1)

您可以使用unshift进行前置,并push将值附加到数组中。

var hours = ['12:00:00', '12:30:00', '13:00:00'];
hours.unshift('11:30:00'); //['11:30:00','12:00:00', '12:30:00', '13:00:00'];
hours.push('13:30:00'); //['11:30:00','12:00:00', '12:30:00', '13:00:00', '13.30.00'];

答案 2 :(得分:1)

您可以尝试以下内容:

var added = addTime(['12:00:00', '12:30:00', '13:00:00'])

    // -> ["11:30:00", "12:00:00", "12:30:00", "13:00:00", "13:30:00"] 

function addTime(hours) {

  var t = ':30:00'

  // add:
  hours.slice(0).forEach(function(hour) {
    var h = parseInt(hour.split(':')[0], 10)
    hours.push(h-1+t, h+t)
  })

  // strip dups and sort:
  return hours.filter(function(elem, idx, arr){ 
    return arr.indexOf(elem) >= idx
  }).sort()
}

演示:http://jsfiddle.net/9jKfA/

答案 3 :(得分:0)

function addMinutes(time, minsToAdd) {
    function z(n){ return (n<10? '0':'') + n;};
    var bits = time.split(':');
    var mins = bits[0]*60 + +bits[1] + +minsToAdd;
    var secs = bits[2];

    return z(mins%(24*60)/60 | 0) + ':' + z(mins%60) + ':' +secs;  
}

var hours = ['12:00:00', '12:30:00', '13:00:00'];

hours.unshift(addMinutes(hours[0], -30));
hours.push(addMinutes(hours[hours.length-1],30));

改编自here。显示09而不是9 ......

var hours = ['09:00:00','12:30:00','13:00:00']; - &GT; 08:30:00,09:00:00,12:30:00,13:00:00,13:30:00