Вот время:

01: 02: 25,369

Я хочу вычесть из него 10 секунд, поэтому возвращаемое значение должно быть:

01: 02: 15,369

Я знаю, что для этого мне нужно написать функцию, но все становится сложно, когда секунды <10, поэтому вам также нужно вычесть минуты и часы.

0
moemous 28 Ноя 2021 в 00:30
1
Преобразовать его в дату и вычесть 1e4 мс
 – 
pilchard
28 Ноя 2021 в 00:35
1
Как мне преобразовать его в свидание? это строка, и у меня нет идеи. У меня NaN
 – 
moemous
28 Ноя 2021 в 00:45

2 ответа

Лучший ответ

Вы можете просто преобразовать его в миллисекунды, а затем добавить или вычесть столько, сколько захотите. А затем создайте функцию рендеринга, чтобы преобразовать ее обратно в строку, если она вам нужна.

function getTotalMS(timeString) {
    const [hms, ms] = timeString.split(',');
    const [h, m, s] = hms.split(':');

    return parseInt(ms) * 1 +
           parseInt(s) * 1000 +
           parseInt(m) * 60 * 1000 +
           parseInt(h) * 60 * 60 * 1000;
}

function renderTime(ms) {
    const h = Math.floor(ms / (60 * 60 * 1000)); ms -= h * 60 * 60 * 1000;
    const m = Math.floor(ms / (60 * 1000)); ms -= m * 60 * 1000;
    const s = Math.floor(ms / (1000)); ms -= s * 1000;

    return `${h<10?'0':''}${h}:${m<10?'0':''}${m}:${s<10?'0':''}${s},${ms}`;
}


// subtracting 10 seconds
let totalTime = getTotalMS('01:02:25,369');
totalTime -= 10 * 1000;
console.log(renderTime(totalTime));

Возможно, можно было бы оптимизировать, но вот отправная точка

2
skara9 28 Ноя 2021 в 00:53

Превратите его в дату, затем вычтите 10000 (не изобретайте велосипед)

2
Puyo 28 Ноя 2021 в 00:37
1
Как мне преобразовать его в свидание? это строка, и у меня нет идеи. Я получаю NaN
 – 
moemous
28 Ноя 2021 в 00:45
 – 
Puyo
28 Ноя 2021 в 00:52
1
В приведенном вами примере используется momentjs, который является тяжелым и устаревшим
 – 
skara9
28 Ноя 2021 в 00:58
Я не связал конкретный ответ, просто связал вопрос: p
 – 
Puyo
28 Ноя 2021 в 01:02