einfachste, aber nicht supersmart Lösung wird mit Timedelta
import datetime
>>> now = datetime.datetime.utcnow()
US/Eastern 5 Stunden hinter UTC ist, so lassen Sie sich nur thouse 5 Stunden als Timedelta-Objekt erstellen und es negativ machen, so dass beim Lesen zurück unser Code können wir sehen, dass die -5 versetzt ist und dass keine Magie gibt es zu der Entscheidung, wann hinzuzufügen und wenn Zeitzone
>>> eastern_offset = -(datetime.timedelta(hours=5))
>>> eastern = now + eastern_offset
>>> now
datetime.datetime(2016, 8, 26, 20, 7, 12, 375841)
>>> eastern
datetime.datetime(2016, 8, 26, 15, 7, 12, 375841)
versetzt zu subtrahieren Wenn wir beheben DST wollten wir die Datetime durch smoething wie gerannt das (nicht ganz genau, Zeitzonen sind nicht meine e Xpertise (googeln etwas jetzt ist es ändert sich jedes Jahr, igitt))
if now.month > 2 and now.month < 12:
if (now.month == 3 and now.day > 12) or (now.month == 11 and now.day < 5):
eastern.offset(datetime.timedelta(hours=5))
Sie noch mehr ins Detail gehen könnte, Stunden hinzufügen, herauszufinden, wie genau ändert es jedes Jahr ... Ich werde nicht gehen durch all das :)
Sie könnten Ihre eigene Funktion schreiben, die hinzufügen/subtrahieren würde timedelta – iScrE4m
yeah Ich möchte das vermeiden, denn dann müssen Sie den richtigen Offset verfolgen, richtig? –
Yah, aber ich kann mir keinen anderen Weg vorstellen:/Du könntest immer Deinen eigenen Pytz schreiben: D https://github.com/newvem/pytz/tree/master/pytz – iScrE4m