#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