Une compilation de documentations   { en , fr }

Convertir des secondes en heures dans un shell

Étiquette:
Créé en:
Dernière modification:
Auteur:
Xavier Béguin

Voici une petite fonction shell (dont j'ai trouvé le principe sur le web, parce que je suis fainéant – et que j'ai voulu publier ici pour la retrouver facilement) pour convertir naïvement un nombre de secondes en heures, minutes et secondes (le calcul d'un nombre de jours peut être ajouté de façon triviale) :

seconds2human() {
    sec="$1"
    h=$((sec / 3600)) m=$(((sec % 3600) / 60)) s=$((sec % 60))
    printf "%2dh %02dm %02ds\n" $h $m $s
}

Notez que cette fonction est compatible POSIX et peut donc être utilisée dans tous les interpréteurs de ligne de commande respectant cette norme.

Voici un exemple de son utilisation :

$ seconds2human 12345
 3h 25m 45s 

Juste pour vérifier, on peut tester avec un nombre bien reconnaissable (24 h × 60 min × 60 sec = 86400 sec) :

Tests$ seconds2human 86461
24h 01m 01s