Ich habe ein Datum im Format:
22-Sep-2014 10:32:35
Ich brauche einen 13-stelligen Zeitstempel, aber wenn ich auf diese Weise konvertiere
time=$(date -d "$DATE" '+%s')
Ich bekomme eine 10-stellige Nummer
Wenn ich es versuche
tt=$(date -d "$DATE");
time=$($tt +'%s * 1000 + %-N / 1000000')
Ich bekomme
line 22: Mon: command not found
bash
timestamps
Alexiel
quelle
quelle
Antworten:
Ihr zweiter Versuch war knapp. Sie müssen lediglich den
date
Befehl anweisen, am Ende Millisekunden hinzuzufügen. Sie können dies mit dem%N
Formatierer tun .%N
Erweitert sich auf Nanosekunden, und dann können Sie dies einfach mit kürzen%3N
.Beachten Sie jedoch, dass Ihre Beispieleingabezeit keine Millisekunden enthält, sodass Sie sie einfach
.000
am Ende hinzufügen können .Angenommen, dies ist nicht das, was Sie wollen, dann ist hier ein Beispiel, das Millisekundengenauigkeit bietet:
quelle
Ich habe es und das ist:
und der folgende ist der kürzeste des obigen Codes:
und die Ausgabe für beide ist wie folgt:
Das
-u
ist nur für die UTC-Zeitzone. Sie können es entfernen.quelle