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?


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

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

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


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]"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.