首页 > 解决方案 > 从数组中获取时间差

问题描述

我有一个这样的数组 -

[ 'State is:1Time:2019-2-3 11:45:02',  
  'State is:1Time:2019-2-3 12:45:05',  
  'State is:1Time:2019-3-4 11:45:00',  
  'State is:2Time:2019-3-5 11:45:08',  
  'State is:2Time:2019-4-5 11:45:10',  
  'State is:2Time:2019-4-5 11:45:12', ]

使用 Javascript,我如何按状态检查出现并减去它们的时间。这意味着例如 State 1发生 3 次,我想要第一次State 1出现时间2019-2-3 11:45:02 和第三次出现时间之间的State 1 时间差2019-3-4 11:45:00?就像这样State 2

标签: javascriptnode.jstypescript

解决方案


你可以这样做

function calculateTime() {
    var array = [ 'State is:1Time:2019-2-3 11:45:02',  
  'State is:1Time:2019-2-3 12:45:05',  
  'State is:1Time:2019-3-4 11:45:00',  
  'State is:2Time:2019-3-5 11:45:08',  
  'State is:2Time:2019-4-5 11:45:10',  
  'State is:2Time:2019-4-5 11:45:12', ];
  var previousState=0;
  var previousTime = 0;
  for(var i=0;i<array.length;i++)
  {
      var str = array[i];
  str = str.split('Time');
 var str1 = str[0].split(":");
 var str2 = str[1].split(/:{0-1}/);
 var currentState = str1[1];

 var date = new Date(str2[0].substring(1,str2[0].length));
 var currentTime = date.getTime();
 if((previousState != currentState && (i >0 )|| i ==array.length-1)  )
 {
     console.log(currentTime - previousTime);
 }
 previousState = currentState;
 previousTime = currentTime;
 }

}

推荐阅读