Как перевести секунды в минуты и секунды в формате XX:XX?

Рейтинг: -1Ответов: 3Опубликовано: 10.02.2023

Как перевести секунды (например - 578 секунд) в минуты и секунды, чтобы минуты и секунды выводились в таком формате: 10:39, 05:02 (то есть если минут или секунд меньше 10, то вначале выводится 0)?

Ответы

▲ 0Принят

Как перевести секунды (например - 578 секунд) в минуты и секунды, чтобы минуты и секунды выводились в таком формате: 10:39, 05:02

Например таким образом можно перевести...

const s = 578 
console.log(sToStr(s))

//
function sToStr(s) {
  let m = Math.trunc(s / 60) + ''
  s = (s % 60) + ''
  return m.padStart(2, 0) + ':' + s.padStart(2, 0)
}

▲ 0

Без учета часов. Для них логика будет примерно такой же

function nilFirst(t) {
  if (t.toString().length === 1) return '0' + t;
  return t.toString();
}

function toTime(sec = 0) {
  return nilFirst(Math.trunc(sec / 60)) + ':' + nilFirst(sec % 60)

}

console.log(toTime(0))
console.log(toTime(60))
console.log(toTime(61))
console.log(toTime(110))
console.log(toTime(75))
console.log(toTime(578))
console.log(toTime(978))

▲ 0

Как по мне, это самый просто способ решить вашу задачу:

log(578)
log(123)
log(42)
log(9999)
log('42')
log('Hello!')
log(NaN)

function log(sec) {
  console.log(sec, '->', convertSeconds(sec))
}

function convertSeconds(sec) {
  let date = new Date(1970, 0, 0, 0, 0, +sec || 0)
  let time = date.toLocaleTimeString('ru')

  return time
}

Как с этим работать?

Всё просто, у функции convertSeconds есть два аргумента, первый sec, туда вы должны вводить секунды, если число не валидное, тогда вместо него будет 0. Функция log была лишь для примера, чтобы можно было увидеть результаты.