51 Stimmen

pytz utc Umwandlung

Wie konvertiert man eine naive Zeit und einen tzinfo in eine UTC-Zeit? Sagen wir, ich habe:

d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')

Erster Weg, pytz inspiriert:

d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)

Zweiter Weg, von UTCDateTimeField

def utc_from_localtime(dt, tz):
    dt = dt.replace(tzinfo=tz)
    _dt = tz.normalize(dt)
    if dt.tzinfo != _dt.tzinfo:
        # Houston, we have a problem...
        # find out which one has a dst offset
        if _dt.tzinfo.dst(_dt):
            _dt -= _dt.tzinfo.dst(_dt)
        else:
            _dt += dt.tzinfo.dst(dt)
    return _dt.astimezone(pytz.utc)

Es ist unnötig zu erwähnen, dass diese beiden Methoden für eine Reihe von Zeitzonen unterschiedliche Ergebnisse liefern.

Die Frage ist: Was ist der richtige Weg?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X