Я хочу преобразовать время, т. Е. Количество секунд, в строку времени, разделенную двоеточиями (чч: мм: сс)
Я нашел здесь несколько полезных ответов, но все они говорят о конвертации в формат х часов и х минут.
Так есть ли крошечный фрагмент, который делает это в jQuery или просто сырой JavaScript?
Ответы:
Вы можете использовать его сейчас как:
Рабочий фрагмент:
Показать фрагмент кода
источник
Вы можете сделать это без какой-либо внешней библиотеки JS с помощью метода JS Date, как показано ниже:
источник
new Date(1000 * seconds).toISOString().substr(11, 8)
..replace(/^[0:]+/, "")
после,substr
чтобы удалить все нули и:
от начала строки.Чтобы получить часть времени в формате
hh:MM:ss
, вы можете использовать это регулярное выражение:(Это было упомянуто выше в том же посте кем-то, спасибо за это.)
источник
var myDate = new Date().toTimeString().replace(/.*(\d{2}:\d{2})(:\d{2}).*/, "$1");
replace
сбивает с толку. Почему бы не использоватьnew Date(null, null, null, null, null, timeInSeconds).toTimeString().match(/\d{2}:\d{2}:\d{2}/)[0]
?new Date().toTimeString().split(" ")[0]
Я рекомендую обычный javascript, используя объект Date:
(Конечно, с созданным объектом Date будет связана фактическая дата, но эти данные посторонние, поэтому в этих целях вам не нужно об этом беспокоиться.)
источник
date.getUTCHours()
иdate.getUTCMinutes()
.Поиск Google нашел этот результат :
источник
secondsToTime(119.9)
=>Object {h: 0, m: 1, s: 60}
. Чтобы исправить это, добавьтеsecs = Math.round(secs);
в начале метода. Конечно, мы видели эту ошибку во время демонстрации ...Вариация на тему. Обрабатывает однозначные секунды немного по-другому
источник
Вот мой взгляд на это:
Ожидаемые результаты:
источник
const formatTime = (seconds, h = Math.floor(seconds / 3600), m = Math.floor((seconds % 3600) / 60), s = seconds % 60) => [h, m > 9 ? m : '0' + m, s > 9 ? s : '0' + s].filter(s => s).join(':');
second
аргумента. Я считаю свою версию более понятной, даже если она более многословна.seconds: number
Тип аннотации, в es6?const s = Math.round(seconds % 60);
Мне нравится первый ответ. Там несколько оптимизаций:
Исходными данными является номер. дополнительные расчеты не нужны.
много лишних вычислений
Код результата:
источник
Number
это правильно, потому чтоseconds
, на самом деле, это число. Вы должны конвертировать из строки перед использованием этой функции, и это правильно!Используя удивительную библиотеку moment.js :
Это позволяет вам указать любую длительность, будь то часы, минуты, секунды, мельницы, и возвращает удобочитаемую версию.
источник
источник
new Date().toString().split(" ")[4];
результат
15:08:03
источник
new Date(new Date().getTime() - startTime).toUTCString().split(" ")[4]
где этоstartTime
было установлено ранее с использованиемstartTime = new Date().getTime();
. (Я должен был использовать,toUTCString()
потому что иначе время было часом.)Это довольно легко,
источник
результат:
источник
Мне больше всего понравился ответ Webjins, поэтому я расширил его, чтобы отображать дни с суффиксом рекламы, сделал отображение условным и включил его как суффикс в обычные секунды:
возвращает «3d 16:32:12» или «16:32:12» или «32:12» или «12s»
источник
Мне понравился ответ Powtac, но я хотел использовать его в angular.js, поэтому я создал фильтр, используя его код.
Он функционально идентичен, за исключением того, что я добавил опциональное десятичное поле для отображения доли секунды. Используйте его так же, как и любой другой фильтр:
{{ elapsedTime | HHMMSS }}
дисплеи:01:23:45
{{ elapsedTime | HHMMSS : 3 }}
дисплеи:01:23:45.678
источник
Я думаю, с точки зрения производительности это, безусловно, самый быстрый:
источник
Примеры
источник
Math.floor()
и секунды, поскольку они могут быть указаны в десятичных числах. (Случилось со мной.)Вот еще одна версия, которая также обрабатывает дни:
источник
Регулярное выражение можно использовать для сопоставления временной подстроки в строке, возвращаемой
toString()
методом объекта Date, который отформатирован следующим образом: «Чт, 05 июля 2012 02:45:12 GMT + 0100 (GMT Daylight Time)». Обратите внимание, что в этом решении используется время, прошедшее с эпохи: полночь 1 января 1970 года. Это решение может быть однострочным, хотя его разделение облегчает понимание.источник
Вот как я это сделал. Кажется, это работает довольно хорошо, и это очень компактно. (Хотя использует много троичных операторов)
... и для форматирования строк ...
источник
Вы можете использовать следующую функцию для преобразования времени (в секундах) в
HH:MM:SS
формат:Не передавая разделитель, он использует
:
(по умолчанию) разделитель:Если вы хотите использовать
-
в качестве разделителя, просто передайте его как второй параметр:демонстрация
Смотрите также эту скрипку .
источник
В блоке появился новый метод для строк: padStart
Вот пример использования: продолжительность YouTube в 4 строки JavaScript
источник
Вот как я это сделал
timeFromSecs (22341938) вернет '258d 14h 5m 38s'
источник
Я лично предпочитаю ведущую единицу (дни, часы, минуты) без ведущих нулей. Но секунды всегда должны идти за минутами (0:13), это представление легко считать «продолжительностью», без каких-либо дополнительных пояснений (помечая как min, sec (s) и т. Д.), Используемое на разных языках (интернационализация).
// имитация форматирования продолжительности на стороне сервера (.net, C #), например:
источник
Вы можете использовать Momement.js с плагином форматом момент-длительности :
Смотрите также эту скрипку
источник
где параметр locale ("en", "de" и т. д.) является необязательным
источник
источник
Вот обновленный однострочник для 2019 года:
источник
Date
объект.Вот довольно простое решение, которое округляется до ближайшей секунды!
источник
Это тот, который я недавно написал для MM: SS. Это не точный вопрос, но это другой формат одной строки.
Изменить: это было добавлено для разнообразия, но лучшее решение здесь https://stackoverflow.com/a/25279399/639679 ниже.
источник