javascript - 在 Javascript 中解析时间字符串

标签 javascript node.js

所以,我有这个 Web 服务器,它可以解析具有特定“时间段”的 XML 文件。

时间段显示如下(我无法更改):

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

我想对日期介于 00:00:0000:10 之间的所有对象执行 _.filter() 选择: 00,然后是包含 00:10:0000: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'];
  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 ]
    

    由于我们处理的是数组的数组,因此我们需要一个包装器。

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

关于javascript - 在 Javascript 中解析时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429512/

相关文章:

javascript - Windows 7 专业版上的 "Fatal error: Unable to find local grunt."

node.js - 如何使用 Node.js 计算两个日期之间的差异?

javascript - 如何使用 ICheck.js 清除 div 的内容?

javascript - 重新加载模板中嵌入的 javascript (Grails)

javascript阶乘函数得到RangeError

node.js - Next.js 找不到模块 loader.js

javascript - 在控制台应用程序中编辑 JavaScript 文件时出现意外的 ReSharper 警告

javascript - 将服务器端的值(value)转移到客户端

javascript - 使用 Node.js 发送电子邮件时未处理的 promise 拒绝

node.js - 在 Node.js/Express 中,如何为重定向禁用浏览器缓存?