добавить начальный ноль в простую функцию добавления временной метки JavaScript

#javascript #timestamp

#javascript #временная метка

Вопрос:

Я пытаюсь написать функцию javascript для суммирования двух строк временных меток, таких как 00:04:02 и 00:05:43

У меня есть эта функция, которая работает, но возвращает значение типа: 0:9:45 , я пытаюсь улучшить ее, чтобы в разделе минут был начальный ноль, поэтому он больше похож на: 0:09:45 но у меня возникли проблемы с этим, и мне было интересно, может ли кто-нибудь мне помочь:

 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('00:05:43', '00:04:02'))  

Комментарии:

1. 0:09:45 выглядит так 0:09:45

2. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

3. если вы запустите мой код, вы увидите, что результат моей функции sum() является 0:9:45 , но я хочу, чтобы это было 0:09:45

4. Мой комментарий о числах заключается в том, что они совпадают с вашим вопросом….

Ответ №1:

Дополнить каждую цифру?

 return result.map(r => String(r).padStart(2, "0")).join(":");
  

Ответ №2:

Если вы используете встроенные Date методы, вам не нужно анализировать времена или делать математику самостоятельно.

 'use strict';

function sumTimestamps(a, b) {
  const [A, B] = [a, b].map((x) => new Date('1970-01-01T'   x   '.000Z'));
  return new Date(A.getTime()   B.getTime()).toUTCString().split(' ')[4];
}

const sum = sumTimestamps('00:04:02', '00:05:43');
console.log(sum);
// => 00:09:45