@DannYLook
Программист

Как можно переводить минут/секунд/часы в число если получаю не в формате числа?

Мне api дает значение, например:

{
  "text": "2 минуты 30 секунд"
}

Как это значение перевести в секунды, чтобы было 150? Значение может быть любое, например:

{
  "text": "2 часа 31 минута 35 секунд"
}
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
Geminix
@Geminix
Фуллстек nuxt, .net разработчик
парсим цифры регуляркой, ревертим массив, чтобы секунды были первыми, на случай если в строке нет часов или нет часов и минут, а только секунды
const [s,m,h] = "2 часа 31 минута 35 секунд".match(/(\d+)/g).reverse()
const result = parseInt(s) + parseInt(m ?? 0)*60 + parseInt(h ?? 0)*60*60
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега JavaScript
const getSeconds = str =>
  [
    [ 'де?н', 24 * 60 * 60 ],
    [  'час',      60 * 60 ],
    [  'мин',           60 ],
    [  'сек',            1 ],
  ].reduce((acc, n) => {
    return acc + (str.match(RegExp(`\\d+(?=\\s+${n[0]})`)) ?? 0) * n[1];
  }, 0);


getSeconds('2 часа 22 секунды') // 7222
getSeconds('99 минут') // 5940
getSeconds('1 час 1 минута 1 секунда') // 3661
getSeconds('666 секунд') // 666
getSeconds('1 день 23 часа 59 минут 60 секунд') // 172800
getSeconds('2 дня') // 172800
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы