Frage zur Uhrzeit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

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:

Code: Alles auswählen

Mon Aug 23 10:11:23 UTC 2010
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.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Was willst du denn? `now` gibt die aktuelle lokale Uhrzeit an. `utcnow` die UTC-Zeit.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

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.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

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:

Code: Alles auswählen

datetime.utcnow()+timedelta(hours=2)

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.)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

fehlt mir da nen import, denn das timedelta, kennt er nicht.
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

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)
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

danke sehr !
lunar

Wieso konfigurierst Du auf dem Server nicht einfach die korrekte Zeitzone?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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. ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
Zuletzt geändert von lunar am Dienstag 24. August 2010, 09:07, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Liefe das Skript nur bis Ende Oktober, fiele das nicht so ins Gewicht.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Antworten