所以,我有这个 Web 服务器,它可以解析具有特定“时间段”的 XML 文件。
时间段显示如下(我无法更改):
00:05:00
00:09:15
01:13:15
采用 HH:MM:SS
格式。
我想对日期介于 00:00:00
和 00:10 之间的所有对象执行
,然后是包含 _.filter()
选择: 0000:10:00
和 00:20:00
之间所有对象的过滤器。
编辑(澄清):时间段是“观看次数”。假设时间段有 50 个条目,范围从 00:00:00 到 1:30:00,但我想制作一个包含
- 时间段
- 该时间段内的平均“观看次数”。
这意味着我需要某种方式来表达:'选择 0 分钟到 10 分钟之间的所有时间段。给我一份 list 。计算平均值'。
为此,我需要有一些可能性来进行算术运算,看到我想要
- 比较日期
- 每次迭代增加 10 分钟
但是,Javascript Date
对象似乎不能很好地处理“恰好时间”,moment.js
库也是如此。我该怎么做?
最佳答案
这是我在 JS 中的做法:
times=['00:05:00', '00:09:15', '01:13:15'];
先秒
function getsec(time){ arr=time.split(':'); return (+arr[0])*3600 + (+arr[1])*60 + (+arr[2]); } times.map(getsec) [ 300, 555, 4395 ]
然后将时间过滤到特定时间段的槽中
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 ] ]
返回数组的数组。每个子数组都包含按升序排列的槽中的时间
计算平均值
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 ]
由于我们处理的是数组的数组,因此我们需要一个包装器。
最后我要说的是,如果你有很多条目,数据库会更快。
关于javascript - 在 Javascript 中解析时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429512/