Die Datums- / Uhrzeitzeichenfolge hat das folgende Format: 06/12/2012 07:21:22. Wie kann ich es in einen UNIX-Zeitstempel oder eine Epoche konvertieren?
90
Was Sie suchen, ist date --date='06/12/2012 07:21:22' +"%s"
. Beachten Sie, dass dies voraussetzt, dass Sie GNU-Coreutils verwenden, da beide --date
und die %s
Formatzeichenfolge GNU-Erweiterungen sind. POSIX gibt keines von beiden an, daher gibt es auch auf POSIX-kompatiblen Systemen keine tragbare Möglichkeit, eine solche Konvertierung durchzuführen.
Weitere Versionen von finden Sie auf der entsprechenden Handbuchseite date
.
Hinweis: Bash --date
und -d
Option erwarten das Datum im US- oder ISO8601-Format, dh mm/dd/yyyy
oder yyyy-mm-dd
nicht in Großbritannien, der EU oder einem anderen Format.
+"%s"
steht für Ausgabeformat und%s
ist das Format der Zeit in Sekunden seit 1970date --date='06/12/2012 07:21:22 -0000' +"%s"
konvertiert UTC Datum in Unix Zeitstempelyyyy-mm-dd hh:mm:ss
einen Blick auf haben gnu.org/software/coreutils/manual/html_node/... :gdate --date='2019-06-18 00:02:00 +0000' +%s
Für Linux Führen Sie diesen Befehl aus
Führen Sie diesen Befehl unter Mac OSX aus
quelle
-u
Flags sollte das beheben.-u
Flag sollte vor dem-f
Flag stehen, sonst interpretiert die Shell es als Formatzeichenfolge . Also sollte es sein:date -j -u -f "%a..."
date -jf "%Y-%m-%d %H:%M:%S" "2018-01-08 14:45:00" +%s
Viele dieser Antworten sind zu kompliziert und es fehlt auch die Verwendung von Variablen. So würden Sie es auf einem Standard-Linux-System einfacher machen (wie bereits erwähnt, müsste der Datumsbefehl für Mac-Benutzer angepasst werden):
Beispielskript:
Ergebnisse in:
Oder als Funktion:
quelle
quelle
Effiziente Lösung
date
als HintergrundprozessUm diese Art der Übersetzung viel schneller zu machen ...
Intro
In diesem Beitrag finden Sie
bc
,rot13
,sed
...).Schnelle Demo
Dies muss die aktuelle UNIXTIME ausgeben . Von dort konnte man vergleichen
und:
Von mehr als 6 Sekunden bis weniger als einer halben Sekunde !! (auf meinem Gastgeber).
Sie könnten überprüfen
echo $ans
, ersetzen"now"
durch"2019-25-12 20:10:00"
und so weiter ...Optional können Sie nach Beendigung der Anforderung des Datumsunterprozesses Folgendes tun:
Originalbeitrag (ausführliche Erklärung)
Anstatt 1 Gabel nach Datum zum Konvertieren auszuführen, führen Sie
date
nur 1 Mal aus und führen Sie alle Konvertierungen mit demselben Prozess durch (dies könnte viel schneller werden)!:Stichprobe:
Dann schauen Sie jetzt:
Dies geschah in einer Ausführung!
Verwenden eines lang laufenden Unterprozesses
Wir brauchen nur ein Fifo :
(Hinweis: Während der Prozess ausgeführt wird und alle Deskriptoren geöffnet sind, können wir den Dateisystemeintrag von fifo sicher entfernen.)
Dann jetzt:
Wir könnten eine kleine Funktion kaufen:
Oder benutze meine
newConnector
FunktionMit Funktionen für Anschluss
MySQL/MariaDB
,PostgreSQL
undSQLite
...Sie können sie in einer anderen Version auf GitHub oder auf meiner Website finden: herunterladen oder anzeigen .
Hinweis: Auf GitHub sind Funktionen und Test getrennte Dateien. Auf meiner Website Test werden läuft einfach , wenn dieses Skript ist nicht bezogen .
quelle
Stellen Sie einfach sicher, welche Zeitzone Sie verwenden möchten.
Die beliebteste Verwendung ist die Zeitzone der Maschine.
Wenn Sie jedoch absichtlich die UTC-Uhrzeit übergeben möchten und die richtige Zeitzone wünschen, müssen Sie ein
-u
Flag hinzufügen . Andernfalls konvertieren Sie es aus Ihrer lokalen Zeitzone.quelle