ich diese Funktion datetime_to_local_timezone()
verwenden, die übermäßig gewundenen scheint aber ich fand keine einfachere Version einer Funktion, die eine datetime
Instanz an der lokalen Zeitzone umwandelt, wie in dem Betriebssystem konfigurierte, mit der UTC-Offset, zu dieser Zeit in Kraft war:
import time, datetime
def datetime_to_local_timezone(dt):
epoch = dt.timestamp() # Get POSIX timestamp of the specified datetime.
st_time = time.localtime(epoch) # Get struct_time for the timestamp. This will be created using the system's locale and it's time zone information.
tz = datetime.timezone(datetime.timedelta(seconds = st_time.tm_gmtoff)) # Create a timezone object with the computed offset in the struct_time.
return dt.astimezone(tz) # Move the datetime instance to the new time zone.
utc = datetime.timezone(datetime.timedelta())
dt1 = datetime.datetime(2009, 7, 10, 18, 44, 59, 193982, utc) # DST was in effect
dt2 = datetime.datetime(2009, 1, 10, 18, 44, 59, 193982, utc) # DST was not in effect
print(dt1)
print(datetime_to_local_timezone(dt1))
print(dt2)
print(datetime_to_local_timezone(dt2))
In diesem Beispiel werden vier Daten gedruckt. Für zwei Zeitpunkte, jeweils einen im Januar und einen im Juli 2009, druckt er den Zeitstempel einmal in UTC und einmal in der lokalen Zeitzone.Hier, wo MEZ (UTC + 01: 00) im Winter und CEST verwendet (UTC + 02: 00) wird im Sommer verwendet, druckt es die folgenden:
2009-07-10 18:44:59.193982+00:00
2009-07-10 20:44:59.193982+02:00
2009-01-10 18:44:59.193982+00:00
2009-01-10 19:44:59.193982+01:00
lokal wofür? –
verwandt: [Wie konvertiert man eine Python-utc Datetime zu einem lokalen Datetime mit nur Python-Standard-Bibliothek?] (Http://Stackoverflow.com/a/13287083/4279) – jfs