在Javascript中parsing时间string

所以,我有这个Web服务器,用一定的“时间段”parsing一个XML文件。

时间段显示如下(我不能改变这一点):

00:05:00 00:09:15 01:13:15HH:MM:SS格式。

我想要在date介于00:00:0000:10:00之间的所有对象上执行_.filter()select,然后select介于00:10:0000:20:00之间的所有对象的filter00:20:00

编辑(澄清):随着时间的“时间观看”。 假设有50个时间段的条目,从00:00:00到1:30:00不等,但是我想创build一个包含

  • 时间段
  • 在那段时间内,平均“观看次数”。

这意味着我需要某种方式来说:'select0分钟到10分钟之间的所有时间段。 给我一份清单。 计算平均值“。

为此,我需要有一些做算术运算的可能性,看我愿意

  • 比较date
  • 每次迭代添加10分钟

但是,Javascript Date对象好像不能处理“just times”, moment.js库也没有。 我将如何去这个?

这里是我将如何做JS:

 times=['00:05:00', '00:09:15', '01:13:15']; 
  1. 先得到秒

     function getsec(time){ arr=time.split(':'); return (+arr[0])*3600 + (+arr[1])*60 + (+arr[2]); } times.map(getsec) [ 300, 555, 4395 ] 
  2. 然后将时间过滤成特定时间段的时段

     function filter(last, curr, index, array){ chk=parseInt(curr/600); //slots for 10 minutes if (typeof last[chk] === 'undefined') { last[chk]=[]; last[chk].push(curr); } else last[chk].push(curr); return(last) } times.map(getsec).reduce(filter,[]); [ [ 300, 555 ], , , , , , , [ 4395 ] ] 

    返回数组的数组。 每个子数组按时间顺序包含时隙内的时间

  3. 计算平均值

     function avg(last, curr, index, array){ if(index==array.length-1) return (last+curr)/array.length; else return last+curr; } times.map(getsec).reduce(avg,0); 1750 function getavg(arr){ return arr.reduce(avg,0); } times.map(getsec).reduce(filter,[]).map(getavg); [ 427.5, , , , , , , 4395 ] 

    由于我们正在处理数组数组,我们需要一个包装器。

最后我会说,如果你有很多条目,数据库会更快。

最简单的方法是将所有东西都转换成秒,然后做你的事情。

 inSeconds = function(time) { var secs, arr = []; arr = time.split(':').map(function(item) { return parseInt(item) }); secs = arr[0]*3600 + arr[1]*60 + arr[2]; return secs; }