J’ai une date complète plus les heures et les minutes. Je voudrais append un nombre de secondes et afficher le résultat comme une date “jour.mois.année heure: minute”.
“date” ne semble pas pouvoir append des secondes à une date donnée.
En fait, la commande de date
GNU (qui est l’implémentation standard dans Ubuntu) peut append des décalages de date directement – par exemple, append 3662 secondes (1 heure, 1 minute, 2 secondes) à une date donnée.
$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds" 13.Jun.2012 10:17:18
Cependant, il faut faire attention aux fuseaux horaires et à l’heure avancée – une option plus sûre consiste probablement à convertir l’heure d’origine en secondes depuis le début de l’époque et à append le décalage souhaité à celui avant de reconvertir le format souhaité, par exemple
$ secs=$(date +%s --date="2012-06-13 09:16:16") $ date '+%d.%b.%Y %T' --date="@$((secs + 3662))" 13.Jun.2012 10:17:18
Comme ça:
$ date +%x.%H:%M:%S:%N 01/21/2014_16:02:07:422856522
Il montre des données de style américain pour moi, mais voir date de l’homme pour plus de raffinement. Les 2 options intéressantes:
%N nanoseconds (000000000..999999999) %S second (00..60)
Et si vous souhaitez utiliser le format standard année, mois et jour:
$ date +%Y.%m.%d_%H:%M:%S:%N 2014.07.21_16:07:52:641771706