Se a sua duração será sempre menor do que um dia você pode usar +%Tformato para Horas: Minutos: Segundos para este date +%T "1970-01-01 + ${seconds} seconds"para obter21:33:09
Ýzmir Ramirez
7
Os créditos são para Stéphane Gimenez, mas se alguém quiser exibir segundos apenas se um período for inferior a um minuto, aqui está minha versão modificada que eu uso (também com pluralização fixa):
No exemplo acima, estou repetindo a saída de outro comando que é executado dentro do $( ... )subcomando. Esse subcomando está fazendo isso, calculando o número de dias (segundos / 86400) e, em seguida, usando o datecomando em outro subcomando $(date -d ... ), para gerar horas, minutos e segundos para um determinado número de segundos.
Estou construindo sobre a resposta de atti, que gostei como uma ideia.
Você pode fazer isso com o bash embutido, printfque levará alguns segundos desde a época como argumento. Não há necessidade de bifurcar-se para correr date.
Você precisa definir o fuso horário como UTC printfporque formata a hora no fuso horário local e você receberá a resposta errada se não estiver no horário UTC.
date --date '@1005454800'fornece Sun Nov 11 00:00:00 EST 20011005454800 segundos após a época do Unix. Você pode formatar isso com a opção data + FORMATO.
Respostas:
Você pode usar algo como isto:
Exemplos:
fonte
A maneira mais fácil e limpa de usar este liner (assumindo o GNU
date
):Se o número de segundos for, diga:
-> saída:
1428 days 21 hours 33 minutes 09 seconds
fonte
+%T
formato para Horas: Minutos: Segundos para estedate +%T "1970-01-01 + ${seconds} seconds"
para obter21:33:09
Os créditos são para Stéphane Gimenez, mas se alguém quiser exibir segundos apenas se um período for inferior a um minuto, aqui está minha versão modificada que eu uso (também com pluralização fixa):
Um exemplo alternativo no POSIX:
fonte
convert $s
para obter uma saída bonita.Eu faria assim:
Aqui está o liner acima, dividido para facilitar a compreensão:
No exemplo acima, estou repetindo a saída de outro comando que é executado dentro do
$( ... )
subcomando. Esse subcomando está fazendo isso, calculando o número de dias (segundos / 86400) e, em seguida, usando odate
comando em outro subcomando$(date -d ... )
, para gerar horas, minutos e segundos para um determinado número de segundos.fonte
Modifiquei a função displaytime acima ... da seguinte maneira:
porque eu sempre quero ver HH: MM: SS, mesmo que sejam zeros.
fonte
Estou construindo sobre a resposta de atti, que gostei como uma ideia.
Você pode fazer isso com o bash embutido,
printf
que levará alguns segundos desde a época como argumento. Não há necessidade de bifurcar-se para correrdate
.Você precisa definir o fuso horário como UTC
printf
porque formata a hora no fuso horário local e você receberá a resposta errada se não estiver no horário UTC.No meu horário local (que atualmente é NZDT - +1300), a resposta está errada se eu não definir o fuso horário
Com e sem definir o fuso horário
fonte
printf
introduziu essa%(datefmt)T
notação começando com o bash-4.2-alpha.Aqui um
Saída:
fonte
date --date '@1005454800'
forneceSun Nov 11 00:00:00 EST 2001
1005454800 segundos após a época do Unix. Você pode formatar isso com a opção data + FORMATO.fonte