it-swarm.com.de

Holen Sie sich die UTC-Zeit in Sekunden

Es sieht so aus, als ob ich es nicht schaffe, das Bash-UTC-Datum in Sekunden zu bekommen. Ich bin in Sydney, also + 10 Stunden UTC Zeit

 date
 Thu Jul 3 17:28:19 WST 2014

 date -u
 Thu Jul 3 07:28:20 UTC 2014

Aber als ich versuchte, es zu konvertieren, erhalte ich das gleiche Ergebnis, das nicht UTC-Zeit ist

 date +%s
 1404372514

 date -u +%s
 1404372515

Was vermisse ich hier?


Nachdem Sie eine Antwort erhalten haben, dass date +%s Die UTC-Zeit zurückgibt, finden Sie hier weitere Details zu dem Problem, mit dem ich gerade konfrontiert bin.

Ich versuche, ein in einer Datei geschriebenes Datum mit Python zu vergleichen. Dieses Datum wird in UTC-Zeit in Sekunden angegeben. Und die Bash date +%s Gibt mir nicht die gleiche. Eigentlich, wenn ich in python time.asctime(time.localtime(date_in_seconds_from_bash)) mache, bekomme ich die aktuelle Zeit von Sydney, nicht UTC. Ich verstehe nicht.

43

Ich glaube +%s ist Sekunden seit Epoche. Es ist eine Zeitzoneninvariante.

21
JamesNoonan33

Ich wette, das ist das, was als Ergebnis beabsichtigt war.

$ date -u [email protected]
Thu Jul  3 07:28:34 UTC 2014
13
Derek Boonstra

Sie sagen, Sie verwenden:

time.asctime(time.localtime(date_in_seconds_from_bash))

wobei date_in_seconds_from_bash vermutlich die Ausgabe von date +%s ist.

Die Funktion time.localtime Gibt, wie der Name schon sagt, die Ortszeit an .

Wenn Sie UTC möchten, verwenden Sie time.gmtime() anstelle von time.localtime().

Wie JamesNoonan33s Antwort sagt, ist die Ausgabe von date +%s Zeitzoneninvariant, also ist date +%s Genau gleichbedeutend mit date -u %s. Es wird die Anzahl der Sekunden seit der "Epoche" ausgegeben, die 1970-01-01 00:00:00 UTC Ist. Die Ausgabe, die Sie in Ihrer Frage zeigen, stimmt völlig mit der folgenden überein:

date -u
Thu Jul 3 07:28:20 UTC 2014

date +%s
1404372514   # 14 seconds after "date -u" command

date -u +%s
1404372515   # 15 seconds after "date -u" command
7
Keith Thompson

Man könnte erwägen, diese Zeile zu ~/.bash_profile (oder ähnlich ), um schnell die aktuelle UTC sowohl als aktuelle Zeit als auch als Sekunden seit der Epoche zu erhalten.

alias utc='date -u && date -u +%s'

2
Adam