Si su duración siempre será inferior a un día, puede usar el +%Tformato de Horas: Minutos: Segundos para que esto date +%T "1970-01-01 + ${seconds} seconds"llegue21:33:09
Yzmir Ramírez
7
El crédito es para Stéphane Giménez, pero si a alguien le gustaría mostrar segundos solo si un período es inferior a un minuto, esta es mi versión modificada que uso (también con pluralización fija):
En lo anterior, estoy haciendo eco de la salida de otro comando que se ejecuta dentro del $( ... )subcomando. Ese subcomando hace esto, calcula el número de días (segundos / 86400), luego usa el datecomando en otro subcomando $(date -d ... )para generar las horas, minutos y segundos para un número determinado de segundos.
Estoy construyendo sobre la respuesta de atti que me gustó como idea.
Puede hacer esto con el bash incorporado, printfque tomará los segundos desde la época como argumento. No es necesario bifurcar para correr date.
Debe configurar la zona horaria en UTC printfporque formatea la hora en su zona horaria local y obtendrá la respuesta incorrecta si no está en la hora UTC.
date --date '@1005454800'te da Sun Nov 11 00:00:00 EST 2001, que es 1005454800 segundos después de la época de Unix. Puede formatear eso con la opción de fecha + FORMATO.
Respuestas:
Puedes usar algo como esto:
Ejemplos:
fuente
La forma más fácil y limpia es este revestimiento (aquí asumiendo GNU
date
):Si el número de segundos es, diga:
-> salida:
1428 days 21 hours 33 minutes 09 seconds
fuente
+%T
formato de Horas: Minutos: Segundos para que estodate +%T "1970-01-01 + ${seconds} seconds"
llegue21:33:09
El crédito es para Stéphane Giménez, pero si a alguien le gustaría mostrar segundos solo si un período es inferior a un minuto, esta es mi versión modificada que uso (también con pluralización fija):
Un ejemplo alternativo en POSIX:
fuente
convert $s
para obtener una salida bonita.Lo haría así:
Aquí está el revestimiento de arriba, desglosado para que sea más fácil de entender:
En lo anterior, estoy haciendo eco de la salida de otro comando que se ejecuta dentro del
$( ... )
subcomando. Ese subcomando hace esto, calcula el número de días (segundos / 86400), luego usa eldate
comando en otro subcomando$(date -d ... )
para generar las horas, minutos y segundos para un número determinado de segundos.fuente
Modifiqué la función de tiempo de visualización anterior ... de la siguiente manera:
porque siempre quiero ver HH: MM: SS, incluso si son ceros.
fuente
Estoy construyendo sobre la respuesta de atti que me gustó como idea.
Puede hacer esto con el bash incorporado,
printf
que tomará los segundos desde la época como argumento. No es necesario bifurcar para correrdate
.Debe configurar la zona horaria en UTC
printf
porque formatea la hora en su zona horaria local y obtendrá la respuesta incorrecta si no está en la hora UTC.En mi hora local (que actualmente es NZDT - +1300) la respuesta es incorrecta si no configuro la zona horaria
Con y sin configurar la zona horaria
fuente
printf
introdujo esta%(datefmt)T
notación comenzando con bash-4.2-alpha.Aqui uno
Salida:
fuente
date --date '@1005454800'
te daSun Nov 11 00:00:00 EST 2001
, que es 1005454800 segundos después de la época de Unix. Puede formatear eso con la opción de fecha + FORMATO.fuente