время вывода в формате чч: мм: сс относительно количества секунд

1

Я создал функцию внутри JavaScript, которая преобразует секунды в формат hh:mm:ss. В настоящее время он отлично работает, но я бы хотел, чтобы он был немного более утончен, чем сейчас.

Это то, что у меня есть на данный момент:

convertTime(secs){
    var sec = parseInt(secs, 10),
        hours = Math.floor(sec / 3600),
        minutes = Math.floor((sec - (hours * 3600)) / 60),
        seconds = sec - (hours * 3600) - (minutes * 60);

    if(hours < 10){ hours = "0" + hours; }
    if(minutes < 10){ minutes = "0" + minutes; }
    if(seconds < 10){ seconds = "0" + seconds; }

    return hours + ":" + minutes + ":" + seconds;
}

// this will output 00:02:03
convertTime(123);

Тем не менее, я предпочел бы, чтобы возвращаемые выходы были чем-то вроде этого:

11 → 0:11

60 → 1:00

1200 → 20:00

3600 → 1:00:00

36000 → 10:00:00

Я сделал бесчисленные попытки создать (и найти) функцию, которая может сделать что-то подобное, но все конверсии JavaScript, с которыми я сталкивался (и/или сделанные), всегда выполняются в формате hh:mm:ss или просто выводятся неправильно.

Вся помощь действительно оценена, Cheers.

  • 0
    Вероятно, потому что все ожидают, что 0:11 будет 11 минут после полуночи. Ваш предложенный вывод является нестандартным и вводящим в заблуждение. Может быть, вам следует подумать, действительно ли вы хотите, чтобы это было так.
  • 0
    @str Я забыл упомянуть, что это для видеоплеера :) Это то, как это делают YouTube, Facebook и Twitter - так что это не должно вводить в заблуждение
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

Просто измените оператор возврата на

return parseInt( hours ) > 0 ? ( hours + ":" + minutes + ":" + seconds ) : ( minutes + ":" + seconds ) ;

Просто не возвращайте hours если hours не превышают 0

В случае, если ваши minutes нужно обрезать, если нет hours то обновите свою логику дополнений до

if(hours > 0 && minutes < 10){ minutes = "0" + minutes; }
  • 0
    Ах да, видит , пока вы почти правы, я уже пытался это: / и в то время как Сорт работает, всегда есть , что ведущие 0 (то есть: 02:40 и 02:01:00
  • 0
    Спасибо за ответ, хотя! : D ценю это
Показать ещё 2 комментария
1

Более компактная версия ответа @gurvinder372

return (parseInt(hours) > 0 ? hours + ":" : "") + minutes + ":" + seconds;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню