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?

Hank
la source
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/')
se ruer
la source
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
Joe
la source
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

Johan
la source
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]"
user2538887
la source