Seite 1 von 1
Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 11:15
von The Hit-Man
Ich schreibe gerade an einem kleinen Script, in dem ich die Systemuhrzeit auslesen muß. Es handelt sich um einen ESXi Server, auf dem ein Linux rennt. Wenn ich nun unter Linux, den date Befehl eingebe bekomme ich folgene Ausgabe:
unter Python, frage ich die Zeit so ab:
Code: Alles auswählen
now = datetime.datetime.utcnow ()
zeit_jetzt = now.strftime("%H:%M:%S")
print (zeit_jetzt)
Das geht auch alles so weit. Die Sache ist nun die, das die Zeit 2 Stunden früher ist, als wir wirklich haben. Also wir haben jetzt auf der normalen Uhr 12:13h und wenn ich den Server frage haben wir 10:13h.
Meine Frage ist nun, kann ich irgendwie, in meinem Script, 2h dazu rechnen, damit die Uhrzeit wieder stimmt? Oder löst man das irgendwie anders? Auf dem Server kann ich die Uhrzeit nicht manuel richtig stellen.
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 11:37
von jbs
Was willst du denn? `now` gibt die aktuelle lokale Uhrzeit an. `utcnow` die UTC-Zeit.
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 11:43
von The Hit-Man
das komische ist ja, das beide befehle now und utcnow, die gleich uhrzeit anzeigen. ich brauche aber dann 2h plus. warum die zeit auf dem server falsch ist, kann ich nicht sagen.
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 12:11
von jbs
Wenn der Rechner nicht weiß wo er ist kann er auch keine locale Uhrzeit angeben.
Der Rechner gibt ja auch im Linux UTC.
Wenn du nur zwei Stunden addieren willst, dann kannst du datetime.timedelta verwenden:
Ist aber nicht sehr sauber. Ich kenn mich da leider nicht aus, aber es sollte eine Lösung geben, bei der die lokalen Einstellen berücksichtigt werden (Sommerzeit etc.)
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 12:23
von The Hit-Man
fehlt mir da nen import, denn das timedelta, kennt er nicht.
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 12:38
von .robert
Code: Alles auswählen
import datetime
datetime.datetime.utcnow()+datetime.timedelta(hours=2)
oder
Code: Alles auswählen
from datetime import datetime, timedelta
datetime.utcnow()+timedelta(hours=2)
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 12:47
von The Hit-Man
danke sehr !
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 13:43
von lunar
Wieso konfigurierst Du auf dem Server nicht einfach die korrekte Zeitzone?!
Re: Frage zur Uhrzeit
Verfasst: Montag 23. August 2010, 23:14
von Leonidas
lunar hat geschrieben:Wieso konfigurierst Du auf dem Server nicht einfach die korrekte Zeitzone?!
Auf Servern würde ich persönlich auch eher UTC verwenden. Achwas, das mache ich jetzt schon, weg mit dem Konjunktiv.

Re: Frage zur Uhrzeit
Verfasst: Dienstag 24. August 2010, 07:42
von lunar
@Leonidas: Dann sollte das Programm aber entsprechend mit Zeitzonen umgehen können ... einfach pauschal zwei Stunden zu addieren, ist in jedem Fall die schlechteste Lösung.
Re: Frage zur Uhrzeit
Verfasst: Dienstag 24. August 2010, 09:04
von Leonidas
lunar hat geschrieben:Dann sollte das Programm aber entsprechend mit Zeitzonen umgehen können ... einfach pauschal zwei Stunden zu addieren, ist in jedem Fall die schlechteste Lösung.
Zweifellos.
Re: Frage zur Uhrzeit
Verfasst: Dienstag 24. August 2010, 09:12
von jbs
Liefe das Skript nur bis Ende Oktober, fiele das nicht so ins Gewicht.
Re: Frage zur Uhrzeit
Verfasst: Dienstag 24. August 2010, 09:19
von jbs
Re: Frage zur Uhrzeit
Verfasst: Dienstag 24. August 2010, 10:20
von snafu
Probier mal das:
Code: Alles auswählen
from datetime import datetime
from pytz import timezone
berlin = timezone('Europe/Berlin')
now = datetime.now(berlin)
[...]
Das sollte dir eigentlich korrekte Ergebnisse liefern.