使用javascript的时间总和

时间:2017-09-20 19:41:18

标签: javascript

任何人都可以告诉我如何使用javascript(momentjs)做两次总和,例如:

  

2:44:56和2:50:56

我尝试了但不起作用:

2:44:56 + 2:50:56

有什么建议吗?

6 个答案:

答案 0 :(得分:1)

Momentjs有一个duration对象,可用于添加或减少两个或多个时间跨度。

const a = moment.duration('02:44:56');
const b = moment.duration('02:50:56');

const c = a.add(b);

console.log(c.hours() );
console.log(c.minutes() );
console.log(c.seconds() );

答案 1 :(得分:0)

你可以这样做。在时刻对象上使用add方法并传递数据。

let x = moment({  
         hours:'2', 
         minutes:'44',
         seconds:'56'})
       .add({ 
         hours:'2',
         minutes:'50', 
         seconds:'56' })
 console.log(x)

或动态传递数据

let time = {
   hours: 2,
   minutes:44, 
   seconds: 56
}
let time2 = {
   hours: 2,
   minutes:50, 
   seconds: 56
}
let y = moment(time)
         .add(time2)
console.log(y)

答案 2 :(得分:0)

可以添加秒数,然后计算进位值并将其加到分钟总和等等。这可以通过reduce来轻松完成:

function sum(date1, date2){
  date1 = date1.split(":");
  date2 = date2.split(":");
  const result = [];

  date1.reduceRight((carry,num, index) => {
    const max = [24,60,60][index];
    const add =  +date2[index];
    result.unshift( (+num+add+carry) % max );
    return Math.floor( (+num + add + carry) / max );
  },0);

 return result.join(":");
}

console.log(
  sum("2:44:56" , "2:50:56" )
);

Try it

答案 3 :(得分:0)

代码:

var t1 = moment('2:44:56', 'HH:mm:ss');
var t2 = '2:50:56';
var parsed_t2 = t2.split(':') // [2, 50, 56]

var r = t1.add({
  hours: parsed_t2[0], // 2
  minutes: parsed_t2[1], // 50
  seconds: parsed_t2[2], // 56
});

过程:

  1. 将字符串解析为时刻对象(帮助它定义我们正在使用的格式;
  2. 使用split()函数将我们想要添加到 t1 的时间拆分为有效地将 t2 拆分为数组{{1} }
  3. 使用时刻[hours, minutes, seconds]方法将时间加在一起。
  4. Working example

答案 4 :(得分:0)

moment()函数将小时,分钟,秒作为参数,并返回一个具有 add()方法的时刻对象可以将小时,分钟,秒作为参数并返回总时间。

尝试 addTimes(time1,time2)

function addTimes(time1, time2) {
   let [hours1, minutes1, seconds1] = time1.split(':');
   let [hours2, minutes2, seconds2] = time2.split(':');
   return moment({ hours: hours1, minutes: minutes1, seconds: seconds1 })
       .add({ hours: hours2, minutes: minutes2, seconds: seconds2 })
       .format('h:mm:ss');
}

console.log(addTimes('2:44:56', '2:50:56'));

答案 5 :(得分:0)

良好的旧JS解决方案:



var base = new Date(0);
var t1 = new Date(base);
var t2 = new Date(base);
t1.setUTCHours(2,45,50);
t2.setUTCHours(2,50,50);
var t = new Date(t1.getTime() + t2.getTime() - base.getTime());

result = t.getUTCHours() + ":" + t.getUTCMinutes() +":" + t.getUTCSeconds();
console.log(result);




请注意,JS会自动将当天的时间转换为GMT时区,因此我们需要使用UTC版本的时间函数。