为了账号安全,请及时绑定邮箱和手机立即绑定

有一个时间数组,时次不连续,怎样补全比较好?

有一个时间数组,时次不连续,怎样补全比较好?

慕斯王 2019-03-22 18:14:51
一个时间数组,比如:var times = [    '2018-5-15 00:00:00','2018-5-15 01:00:00','2018-5-15 02:00:00','2018-5-15 08:00:00','2018-5-16 03:00:00' ]像这样,补全之间缺失的时次,怎样实现较好?
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

这看起来,不是一个补全的题,是按照间隔1小时生成下标0和下标length-1的时间间隔数组的问题。


let times = [

    '2018-5-15 00:00:00', '2018-5-15 01:00:00', '2018-5-15 02:00:00', '2018-5-15 08:00:00', '2018-5-16 03:00:00'

]


let oneHour = 60 * 60 * 1000;


let now = new Date(times[0]);

let max = new Date(times[times.length - 1]);


let result = [];

while (!(max < now)) {

    result.push(now)

    now = new Date(now.getTime() + oneHour);

}


console.log(result)

还是用moment.js比较方便。


查看完整回答
反对 回复 2019-04-02
?
RISEBY

TA贡献1856条经验 获得超5个赞

你的需求是补全两个时间段之间缺失的小时时间对吧,看到你的数组是排好序的,很简单呀,你可以取出数组首跟尾,然后转成时间戳,接着用个for循环,只要小于尾部时间戳的,就一直加一个小时,存入一个新数组,最后将新数组装回字符串,完成。


查看完整回答
反对 回复 2019-04-02
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

 var times = [

      '2018-5-15 00:00:00','2018-5-15 01:00:00','2018-5-15 02:00:00','2018-5-15 08:00:00','2018-5-16 03:00:00'];

  var oneHour = 60*60*1000;

  var index = 0;

  while(index<times.length-1){

      var next = new Date(new Date(times[index]).getTime()+oneHour);

      if(next<new Date(times[index+1])){

          times.splice(index+1,0,next);

      }

      index++;

  }

  alert(times);


查看完整回答
反对 回复 2019-04-02
  • 3 回答
  • 0 关注
  • 508 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信