Angular 角度7-如何对两个数组的时间字符串元素求和?

Angular 角度7-如何对两个数组的时间字符串元素求和?,angular,typescript,Angular,Typescript,我有两个不同时间字符串的数组 startingTime: string["09:00:00", "5:50:00", "6:30:00"]; duration: string["0:15:00", "01:00:00", "01:00:00"]; 我想把这些数组加在最后一行 endingTime: string ["09:15:00", "6:50:00", "7:30:00"] 我正在使用angular 7构建单页应用程序,尝试使用momentjs,但不确定如何实现它。 非常感谢您的帮助。

我有两个不同时间字符串的数组

startingTime: string["09:00:00", "5:50:00", "6:30:00"];
duration: string["0:15:00", "01:00:00", "01:00:00"];
我想把这些数组加在最后一行

endingTime: string ["09:15:00", "6:50:00", "7:30:00"]
我正在使用angular 7构建单页应用程序,尝试使用momentjs,但不确定如何实现它。 非常感谢您的帮助。

请尝试以下方式:

let seta = ["09:00:00", "5:50:00", "6:30:00"];
let setb = ["0:15:00", "01:00:00", "01:00:00"]

let totalArray = []

seta.forEach((time,index) => {
  totalArray.push(this.addTimes([time,setb[index]))
});


addTimes(times) {

const z = (n) => (n < 10 ? '0' : '') + n;

let hour = 0
let minute = 0
let second = 0
for (const time of times) {
    const splited = time.split(':');
    hour += parseInt(splited[0]);
    minute += parseInt(splited[1])
    second += parseInt(splited[2])
}
const seconds = second % 60
const minutes = parseInt(minute % 60) + parseInt(second / 60)
const hours = hour + parseInt(minute / 60)

return z(hours) + ':' + z(minutes) + ':' + z(seconds)
}
让seta=[“09:00:00”、“5:50:00”、“6:30:00”];
让挫折=[“0:15:00”,“01:00:00”,“01:00:00”]
让totalArray=[]
seta.forEach((时间,索引)=>{
totalArray.push(this.addTimes([time,setb[index]))
});
添加次数(次){
常数z=(n)=>(n<10?'0':'')+n;
设小时=0
让分钟=0
设秒=0
for(持续时间次){
const splited=time.split(“:”);
小时+=parseInt(拆分为[0]);
分钟+=parseInt(拆分为[1])
second+=parseInt(拆分为[2])
}
常数秒=秒%60
const minutes=parseInt(分钟%60)+parseInt(秒/60)
常数小时=小时+解析整数(分钟/60)
返回z(小时)+':'+z(分钟)+':'+z(秒)
}

我引用了addTimes()方法

@Godwin Stanislaus因为您的代码对我来说很好,除了一个错误,str.split()不是一个函数。但是,在字符串中添加+''解决了这个问题

下面的代码返回多个时间字符串的总和(HH:MM:SS)


您好,到目前为止您尝试了什么?请共享一些代码,最后是stackblitz上的一个小复制。const minutes=parseInt(分钟%60)+parseInt(秒/60)可能重复给出错误,类型为“number”的参数不能分配给类型为“string”的参数。谢谢尝试帮助。返回错误->无法读取未定义的属性“push”。谢谢帮助。我已创建let newArray=[],所以它不应该抛出未定义的推送。我在中测试了代码。因为你分享了你的代码吗?哦,很抱歉我在上面创建了新数组,ofc它返回了一个错误。这是一个魅力。谢谢大家!!!
addTimes(start, end) {
  var a = start.split(":");
  var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
  var b = end.split(":");
  var seconds2 = (+b[0]) * 60 * 60 + (+b[1]) * 60 + (+b[2]);

  var date = new Date(1970, 0, 1);
  date.setSeconds(seconds + seconds2);
  var c = date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
  return c;
}

addDurationToHours() {
  let hours = ["09:00:00", "5:50:00", "6:30:00"]; 
  let duration = ["0:15:00", "01:00:00", "01:00:00"]; 

  let newArray = [];
  hours.forEach( ( hour, index ) => {
    newArray.push( this.addTimes(hour, duration[index]))
  })
  console.log ( newArray )
  return newArray;
}
  var timedata=['00:00:08', '00:22:78', '02:22:01', '00:15:07'];
  var total=this.sumTime(timedata);
  console.log('total time spent', total);


  sumTime(arr) {

  var seconds:number=0;
  var date = new Date(1970,0,1);
  arr.forEach(element => { 
    var a = (element+'').split(":");
    var sec = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
    seconds=seconds+sec;
  });
  
  
  date.setSeconds(seconds);

  var c = date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
  return c;
}