Если ваша продолжительность всегда будет меньше дня, вы можете использовать +%Tформат для Часов: Минут: Секунды, чтобы это date +%T "1970-01-01 + ${seconds} seconds"получить21:33:09
Измир Рамирес
7
Кредит идет к Стефану Гименесу, но если кто-то хотел бы отображать секунды, только если период меньше минуты, вот моя модифицированная версия, которую я использую (также с фиксированным множественным числом):
Выше я повторяю вывод другой команды, которая выполняется внутри $( ... )подкоманды. Эта подкоманда делает это, вычисляя количество дней (секунд / 86400), затем используя dateкоманду в другой подкоманде $(date -d ... ), чтобы сгенерировать часы, минуты и секунды для заданного количества секунд.
Я строю ответ Атти, который мне понравился как идея.
Вы можете сделать это с помощью встроенной команды bash, printfкоторая в качестве аргумента займет секунды с начала эпохи. Не нужно раскошелиться, чтобы бежать date.
Вы должны установить часовой пояс на UTC, printfпотому что он форматирует время в вашем местном часовом поясе, и вы получите неправильный ответ, если вы не в UTC времени.
date --date '@1005454800'дает вам Sun Nov 11 00:00:00 EST 2001, что составляет 1005454800 секунд после эпохи Unix. Вы можете отформатировать это с опцией date + FORMAT.
Ответы:
Вы можете использовать что-то вроде этого:
Примеры:
источник
Самый простой и понятный способ - это один вкладыш (здесь предполагается, что GNU
date
):Если количество секунд, скажем:
-> вывод:
1428 days 21 hours 33 minutes 09 seconds
источник
+%T
формат для Часов: Минут: Секунды, чтобы этоdate +%T "1970-01-01 + ${seconds} seconds"
получить21:33:09
Кредит идет к Стефану Гименесу, но если кто-то хотел бы отображать секунды, только если период меньше минуты, вот моя модифицированная версия, которую я использую (также с фиксированным множественным числом):
Альтернативный пример в POSIX:
источник
convert $s
чтобы получить красивый результат.Я бы сделал это так:
Вот один вкладыш выше, разбитый так, чтобы его было легче понять:
Выше я повторяю вывод другой команды, которая выполняется внутри
$( ... )
подкоманды. Эта подкоманда делает это, вычисляя количество дней (секунд / 86400), затем используяdate
команду в другой подкоманде$(date -d ... )
, чтобы сгенерировать часы, минуты и секунды для заданного количества секунд.источник
Я изменил функцию displaytime выше ... следующим образом:
потому что я всегда хочу видеть ЧЧ: ММ: СС, даже если они нули.
источник
Я строю ответ Атти, который мне понравился как идея.
Вы можете сделать это с помощью встроенной команды bash,
printf
которая в качестве аргумента займет секунды с начала эпохи. Не нужно раскошелиться, чтобы бежатьdate
.Вы должны установить часовой пояс на UTC,
printf
потому что он форматирует время в вашем местном часовом поясе, и вы получите неправильный ответ, если вы не в UTC времени.В моем местном времени (которое в настоящее время NZDT - +1300) ответ будет неправильным, если я не установил часовой пояс
С и без установки часового пояса
источник
printf
ввел это%(datefmt)T
обозначение, начиная с bash-4.2-alpha.Здесь один
Выход:
источник
date --date '@1005454800'
дает вамSun Nov 11 00:00:00 EST 2001
, что составляет 1005454800 секунд после эпохи Unix. Вы можете отформатировать это с опцией date + FORMAT.источник