J'ai une date complète plus les heures et les minutes. Je voudrais ajouter un nombre de secondes et afficher le résultat comme une date "jour.mois.année heure: minute".
"date" ne semble pas pouvoir ajouter des secondes à une date donnée.
En fait, la commande GNU date
(qui est l'implémentation standard dans Ubuntu) peut ajouter des décalages de date directement - par exemple, ajouter 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 à ajouter le décalage souhaité à celui-ci 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 pour moi une donnée stylée mais voyez date du jour 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
Vous pouvez également incrémenter facilement la date du jour avec:
date --date="+1 seconds" '+%Y-%m-%d %T'
man date
indique que ceci est documenté dans info date
, mais je n'ai pas le goût de lire les manuels de info
pour le citer :-)
Testé dans Ubuntu 18.04, date
from Coreutils 8.28.