Разница между двумя временами (не датами) в формате (чч: мм) - PullRequest
0 голосов
/ 07 мая 2020

Например, у меня есть два раза в виде строки:

Time_A = "07:35" (means 7 hours and 35 minutes)

Time_B = "15:00" (means 15 hours and 00 minutes)

Теперь я хотел бы вычесть Time_B из Time_A. Это должно вернуть «-07: 25» (означает минус 7 часов 25 минут). Поэтому я попытался использовать следующую функцию:

function time_diff(Time_A,Time_B ) {

           var t1parts = t1.split(':');
           var t1cm = Number(t1parts[0]) * 60 + Number(t1parts[1]);

           var t2parts = t2.split(':');
           var t2cm = Number(t2parts[0]) * 60 + Number(t2parts[1]);

           var hour = Math.floor((t1cm - t2cm) / 60);
           var min = Math.floor((t1cm - t2cm) % 60);
           return (hour + ':' + min + ':00');
}

Но эта функция возвращает: -8: -25: 00 вместо -07: 25: 00. Есть идеи, как это исправить?

1 Ответ

3 голосов
/ 07 мая 2020

Это потому, что вы округляете отрицательное число в меньшую сторону:

Math.floor(-455/60) = Math.floor(-7.4166667) = -8

Вы можете сделать:

var diff = Math.abs(t1cm - t2cm);
var hour = Math.floor(diff / 60);
var min = diff % 60;

return (t1cm < t2cm ? '-' : '') + hour + ':' + min + ':00';
...