J'ai besoin d'afficher la date et l'heure au format souhaité sous Unix/Linux. Mon format souhaité est: jj/mm/aaaa hh: mm: ss: ms sous Unix ou Linux. Je me suis rapproché en utilisant la commande suivante:
echo $(date +%x_%r)
Cela renvoie:
08/20/2012_02:26:14 PM
Aucune suggestion?
date +%x_%H:%M:%S:%N
si vous devez imprimer seulement deux premiers nombres en ms:
date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'
pour le stocker dans le var:
VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')
Si vous voulez des millisecondes au lieu d'une précision en nanosecondes, vous pouvez utiliser %3N
Au lieu de %N
:
$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659
ou avec votre utilisation souhaitée de $(…)
:
$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659
Mais sachez que %N
Peut ne pas être implémenté en fonction de votre système cible ou de la version bash. Testé sur un système embarqué "GNU bash, version 4.2.37 (2) -release (arm-buildroot-linux-gnueabi)" il n'y avait pas %N
(Ni %3N
):
date +"%F %T,%N"
2014-01-08 16:44:47,%N
date +"%d/%m/%Y_%H:%M:%S:%N"
Lecture plus utile:
Comment formater la date pour l'affichage ou pour l'utiliser dans un script Shell
Tu peux essayer:
echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`
Pour une raison quelconque, `` '' est omis, alors mettez-le après l'écho et à la fin, ou simplement:
date +"[%Y_%m_%d %H:%M:%S,%3N]"
Quelque chose comme ça:
date +'%d/%m/%Y_%H:%M:%S:%N'
Utilisé %N
pour les nanosecondes (000000000..999999999) car je n'ai pas trouvé de millisecondes pour le moment