Zeitstempel in TT / MM / JJJJ_HH: MM: SS: MS unter Unix oder Linux anzeigen

26

Ich muss Datum und Uhrzeit im gewünschten Format in Unix / Linux anzeigen. Mein gewünschtes Format ist: TT / MM / JJJJ HH: MM: SS: MS unter Unix oder Linux. Ich bin mit dem folgenden Befehl nahe gekommen:

echo $(date +%x_%r)

Dies ergibt:

08/20/2012_02:26:14 PM

Irgendwelche Vorschläge?

Strang
quelle
2
Gibt es einen Grund, den Sie verwenden echo? Es scheint überflüssig, man kann es einfach datedirekt benutzen
lk-20.08.12
Ich plane, die aktuelle Zeit in einem Parameter zu speichern und als Teil eines Ausgabedateinamens zu verwenden.
Hank
6
Warum nicht eine ISO-formatierte Datumszeichenfolge verwenden? Diese / ist nicht gut in Dateinamen ... ( en.wikipedia.org/wiki/ISO_8601 )
Johan
Die gängigsten Formate: zxq9.com/archives/795
zxq9

Antworten:

26
date +%x_%H:%M:%S:%N

Wenn Sie nur zwei erste Zahlen als ms ausgeben müssen:

date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'

um es im var zu speichern:

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')
eilen
quelle
1
Dies ist Linux-spezifisch. es funktioniert nicht unter OS X oder * BSD.
13.
Hinweis% x gibt die Datumsdarstellung des Gebietsschemas zurück. Es kann sich also basierend auf dem aktuellen Gebietsschema ändern. Wenn Sie dieses bestimmte Datumsformat wünschen, sollten Sie es wahrscheinlich explizit angeben (wie andere Antworten auch unten zeigen) date +'%d/%m/%Y_%H:%M:%S:%N.
Studgeek
23

Wenn Sie Millisekunden statt Nanosekunden möchten, können Sie %3Nanstelle von %N:

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659

oder mit Ihrer gewünschten Verwendung von $(…):

$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659

Beachten Sie jedoch, dass %Ndies je nach Zielsystem oder Bash-Version möglicherweise nicht implementiert ist. Getestet auf einem eingebetteten System »GNU bash, Version 4.2.37 (2) -release (arm-buildroot-linux-gnueabi)« gab es kein %N(keines %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N
Joe
quelle
2
Sieht so aus, als ob weder FreeBsd noch Mac Osx %Noder unterstützt %3N.
Joe
Ich fügte hinzu echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, aber es schrieb file.file 08:21:02OURCE:184 Failedin die Logdatei. Was habe ich falsch gemacht?
Sven
Auf macOS gibt es gdatein Homebrew apple.stackexchange.com/a/135749/181223
phil pirozhkov
0

Etwas wie das

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

% N wurde für Nanosekunden verwendet (000000000..999999999), da ich momentan keine Millisekunden gefunden habe

Johan
quelle
0

Du kannst es versuchen:

echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`

Aus irgendeinem Grund wird '`' weggelassen, setzen Sie es also nach dem Echo und am Ende, oder einfach:

date +"[%Y_%m_%d %H:%M:%S,%3N]"
user2538887
quelle