Как получить разницу в формате ЧЧ: ММ: СС, используя миллисекунды в JavaScript? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть два раза, как один - 145: 02: 31, а другой - 01:00:00, и я хочу вычислить разницу между этими двумя значениями, как 144: 02: 31, но сейчас я получаю 13:02: 31 что не так.

Пожалуйста, помогите мне спасибо.

Ответы [ 4 ]

1 голос
/ 31 мая 2019

Немного грубовато с форматированием, но работает так, как вам нужно.

function format_ms(time_ms) {
  let hours = 0;
  let minutes = 0;
  let seconds = 0;
  
  hours = parseInt(time_ms / 3600000).toString();

  time_ms %= 3600000;
  
  minutes = parseInt(time_ms / 60000).toString();
  
  time_ms %= 60000;
  
  seconds = parseInt(time_ms / 1000).toString();
  
  return hours + ":" + minutes.padStart(2, '0') + ":" + seconds.padStart(2, '0');
}


let start = moment.duration('145:02:31');
let end = moment.duration('1:00:00');
let delta_ms = start - end; // in ms

console.log(format_ms(delta_ms));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
0 голосов
/ 02 июня 2019

// Convert time in format H:mm:ss to seconds
function hrsToSecs(hrs) {
  var b = hrs.split(':');
  return b[0]*3600 + b[1]*60 + +b[2];
}

// Convert seconds to time in format H:mm:ss
function secsToHrs(secs) {
  var z = n => (n<10? '0':'') + n; 
  return (secs/3600 | 0) + ':' + 
         z(secs%3600/60 | 0) + ':' + 
         z(secs%60);
}

// Get different between times in H:mm:ss format
// Subtract first time from second
function timeDiff(t0, t1) {
  var diff = hrsToSecs(t1) - hrsToSecs(t0);
  return (diff < 0? '-' : '') + secsToHrs(Math.abs(diff));
}

console.log(timeDiff('1:01:01','0:01:00'))
console.log(timeDiff('01:00:00','145:02:31'));
0 голосов
/ 31 мая 2019

Вот попытка без какой-либо внешней библиотеки. шаги -> 1. конвертировать timestamp в seconds 2. рассчитать разницу 3. вернуть секунду в нужный формат

function diff(a, b){
  const getSec = val => {
    const arr = val.split(':')
    return Number(arr[2]) + Number(arr[1])*60 + Number(arr[0])*3600
   }
  const diff =  getSec(a) - getSec(b)

  const h = parseInt(diff/3600)
  const m = parseInt((diff - h*3600)/60)
  const s = diff%60

  return`${h}:${m}:${s}`
}

diff("145:02:31", "01:00:00" ) //"144:2:31"
0 голосов
/ 31 мая 2019
var duration = moment.duration(endTime.diff(startTime));
var hours = duration.asHours();

Это даст вам разницу во времени в часах.

...