我有几小时的数组:
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并检查最后一个并添加下一个。
答案 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()
}
答案 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