Si votre durée sera toujours moins d'un jour , vous pouvez utiliser le +%Tformat pour les heures: minutes: secondes pour cette date +%T "1970-01-01 + ${seconds} seconds"obtenir21:33:09
Ýzmir Ramirez
7
Le mérite revient à Stéphane Gimenez, mais si quelqu'un souhaite afficher les secondes uniquement si une période est inférieure à une minute, voici ma version modifiée que j'utilise (également avec une pluralisation fixe):
Dans ce qui précède, je fais écho à la sortie d'une autre commande qui est exécutée à l'intérieur de la $( ... )sous-commande. Cette sous-commande fait cela, calculant le nombre de jours (secondes / 86400), puis utilisant la datecommande dans une autre sous-commande $(date -d ... ), pour générer les heures, les minutes et les secondes pour un nombre donné de secondes.
Je m'appuie sur la réponse d'atti que j'ai aimé comme idée.
Vous pouvez le faire avec la commande bash printfqui prendra les secondes depuis l'époque comme argument. Pas besoin de bifurquer pour courir date.
Vous devez définir le fuseau horaire sur UTC printfcar il formate l'heure dans votre fuseau horaire local et vous obtiendrez la mauvaise réponse si vous n'êtes pas en heure UTC.
date --date '@1005454800'vous donne Sun Nov 11 00:00:00 EST 2001, qui est 1005454800 secondes après l'époque Unix. Vous pouvez formater cela avec l'option date + FORMAT.
Réponses:
Vous pouvez utiliser quelque chose comme ceci:
Exemples:
la source
Le moyen le plus simple et le plus propre est celui-ci (en supposant ici GNU
date
):Si le nombre de secondes est, dites:
-> sortie:
1428 days 21 hours 33 minutes 09 seconds
la source
+%T
format pour les heures: minutes: secondes pour cettedate +%T "1970-01-01 + ${seconds} seconds"
obtenir21:33:09
Le mérite revient à Stéphane Gimenez, mais si quelqu'un souhaite afficher les secondes uniquement si une période est inférieure à une minute, voici ma version modifiée que j'utilise (également avec une pluralisation fixe):
Un autre exemple dans POSIX:
la source
convert $s
pour obtenir une jolie sortie.Je le ferais comme ça:
Voici la doublure ci-dessus, décomposée afin qu'elle soit plus facile à comprendre:
Dans ce qui précède, je fais écho à la sortie d'une autre commande qui est exécutée à l'intérieur de la
$( ... )
sous-commande. Cette sous-commande fait cela, calculant le nombre de jours (secondes / 86400), puis utilisant ladate
commande dans une autre sous-commande$(date -d ... )
, pour générer les heures, les minutes et les secondes pour un nombre donné de secondes.la source
J'ai modifié la fonction d'affichage ci-dessus ... comme suit:
parce que je veux toujours voir HH: MM: SS, même si ce sont des zéros.
la source
Je m'appuie sur la réponse d'atti que j'ai aimé comme idée.
Vous pouvez le faire avec la commande bash
printf
qui prendra les secondes depuis l'époque comme argument. Pas besoin de bifurquer pour courirdate
.Vous devez définir le fuseau horaire sur UTC
printf
car il formate l'heure dans votre fuseau horaire local et vous obtiendrez la mauvaise réponse si vous n'êtes pas en heure UTC.Dans mon heure locale (qui est actuellement NZDT - +1300), la réponse est fausse si je ne règle pas le fuseau horaire
Avec et sans réglage du fuseau horaire
la source
printf
introduit cette%(datefmt)T
notation en commençant par bash-4.2-alpha.En voici un
Sortie:
la source
date --date '@1005454800'
vous donneSun Nov 11 00:00:00 EST 2001
, qui est 1005454800 secondes après l'époque Unix. Vous pouvez formater cela avec l'option date + FORMAT.la source