Как я могу преобразовать формат '00: 30: 00' в секунды? - PullRequest
4 голосов
/ 26 июня 2019

Я хочу преобразовать пример формата '00: 30: 00 'в секунды. Это мой путь. Есть ли способ добавить эти значения в «строку шаблона»?

ожидаемый эффект:

convert1000 ('00: 30: 00 ') -> 1800

convert1000 ('00: 00: 10 ') -> 10

convert1000 ('00: 08: 10 ') -> 490

convert1000 ('01: 01: 10 ') -> 3670

const convert1000 = (time) => {
    const [hour, minute, sec] = time.split(':');

    if (hour !== "00") {
      return `${(hour* 3600)} + ${(minute * 60)} + ${(sec)}`;
    }

    if (minute !== "00") {
      return `${minute * 60} + ${sec} `;
    }

    return `${sec} `;
  }

Ответы [ 6 ]

4 голосов
/ 26 июня 2019

Вы можете разделить и уменьшить значения, умножив предыдущее значение на 60, а затем добавить значение.

const convert1000 = time => time.split(':').reduce((s, t) => s * 60 + +t, 0);
  
console.log(convert1000('00:30:00')); // 1800
console.log(convert1000('00:00:10')); // 10
console.log(convert1000('00:08:10')); // 58 is wrong, because 8 minutes is 480 plus 10 sec
console.log(convert1000('01:01:10')); // 3670
4 голосов
/ 26 июня 2019

Использование asSeconds из momentjs объекты продолжительности

moment.duration('00:30:00').asSeconds();
2 голосов
/ 26 июня 2019

Вам нужно сначала преобразовать числа строк в целые числа. Это должно работать так, как вы намереваетесь:

let convert1000 = (timeString) => {
    let [hour, minute, second] = timeString.split(':').map(Number);
    return `${(hour* 3600) + (minute * 60) + (second)}`;
}

Обратите внимание, что это возвращает строку; если вы хотите, чтобы это был номер, просто удалите шаблон.

2 голосов
/ 26 июня 2019

Вы должны сделать это следующим образом

const convert1000 = (time) => {
  const [h,m,s] = time.split(':');
  let seconds = (h*3600) + (m * 60) + parseInt(s);
  return seconds;
}

alert(convert1000("00: 30: 00"))

См. Скрипку здесь https://jsfiddle.net/q4zvsowe/

1 голос
/ 26 июня 2019

Вам нужно поместить + в фигурные скобки, чтобы они стали суммами.

Вы должны положить его внутрь одного ${}

Итак, ваш код будет выглядеть так:

const convert2000 = (time) => {
    const [hour, minute, sec] = time.split(':');

    if (hour !== "00") {
      return `${hour* 3600 + minute * 60 + sec}`;
    }

    if (minute !== "00") {
      return `${minute * 60 + sec} `;
    }

    return `${sec}`;
}
0 голосов
/ 26 июня 2019

Попробуйте это:

const convert1000 = (time) => {
  const [hour, minute, sec] = time.split(':');
  return hour * 3600 + minute * 60 + sec * 1;
};

console.log(convert1000('00:30:00'));
...