Afficher l'horodatage en jj / mm / aaaa_hh: mm: ss: ms sous Unix ou Linux


26

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?


2
Y a-t-il une raison que vous utilisez echo? Cela semble redondant, vous pouvez simplement l'utiliser datedirectement
lk-

Je prévois de stocker l'heure actuelle dans un paramètre et de l'utiliser dans le cadre d'un nom de fichier de sortie.
Hank

6
Pourquoi ne pas utiliser une chaîne de date au format ISO? Ce / n'est pas bon dans les noms de fichiers ... ( en.wikipedia.org/wiki/ISO_8601 )
Johan


Formats les plus courants: zxq9.com/archives/795
zxq9

Réponses:


26
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/')

1
Ceci est spécifique à Linux; cela ne fonctionne pas sur OS X ou * BSD.
FCÉN

Remarque% x renvoie la représentation de date des paramètres régionaux. Il peut donc changer en fonction des paramètres régionaux actuels. Si vous voulez ce format de date spécifique, vous feriez probablement mieux de le fournir explicitement (comme d'autres réponses le montrent également ci-dessous) date +'%d/%m/%Y_%H:%M:%S:%N.
studgeek

23

Si vous voulez des millisecondes au lieu d'une précision en nanosecondes, vous pouvez utiliser à la %3Nplace 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 cela %Npeut 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 l'un ni l'autre %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N

2
Il semble que ni FreeBsd ni Mac Osx ne prennent en charge %Nou %3N.
Joe

J'ai ajouté echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, mais il a écrit file.file 08:21:02OURCE:184 Faileddans le fichier journal. Qu'ai-je fait de mal?
Sven

Sur macOS, il y a gdatedans Homebrew apple.stackexchange.com/a/135749/181223
phil pirozhkov


0

Quelque chose comme ça

date + '% d /% m /% Y_% H:% M:% S:% N'

% N utilisé pour les nanosecondes (000000000..999999999) car je n'ai pas trouvé de millisecondes pour le moment


0

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]"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.