Ich verstehe nicht, wieso das ein Problem von Python ist. Mein Betriebssystem kann das auch ohne Python, ergo kann (und sollte) Python doch die Betriebssystem-Funktionen nutzen. Oder ist hier das Problem, dass das dann nicht plattformübergreifend funktioniert? IMHO haben wir auch zwei Aspekte: Zum einen eine Abbildung von Strings wie "Europe/Berlin" und Abkürzungen wie "PST" auf die Stunden-Offsets und zum anderen das Berücksichtigen dieser Offsets. Ein Datetime-Objekt sollte niemals eine lokale Zeit sein, sondern immer basierend auf UTC (1.1.1970 00:00 Z oder so). Nur für die Ausgabe kann jetzt eine Zeitzone berücksichtigt werden.
An die aktuelle Zeit nach UTC komme ich ja mit datetime.datetime.utcnow(). Will ich diese nun anzeigen, z.B. mit "%H:%M", bekommt ich 11:08 obwohl meine Uhr 13:08 zeigt. Statt der Ausgabe beizubringen, welche Zeitzone ich will, muss ich's leider dem Datetime-Objekt sagen. Nachträglich zuweisen kann ich's aber auch nicht.
Also muss ich erst mal eine Unterklasse von datetime.tzinfo machen, z.B. so (das Beispiel in der Doku ist da übrigens falsch):
Code: Alles auswählen
class TZ(datetime.tzinfo):
def __init__(self, offset): self.offset = offset
def utcoffset(self, dt): return offset
def dst(self, dt): return datetime.timedelta(0)
Und schon kann ich mit datetime.datetime.utcnow().replace(tzinfo=TZ(120)).strftime("%H:%M") die lokale Zeit ausgeben.
Könnte nicht wenigstens so eine Klasse beiliegen? Das GMT+0200 jetzt diverse Abkürzungen hat, ist mir doch egal.
Stefan