Ich habe eine Zeichenfolge, die eine UTC Datetime enthältDatetime-Modul und Pandas to_datetime unterschiedliche Ergebnisse
utc_str = '2017-11-21T23:00+0100'
, die in meiner Ortszeit (Europe/Berlin) ist:
local_time = '2017-11-22 00:00'
Und ist der gewünschte Wert Ich möchte von utc_string
erhalten.
kann ich utc_string
-local_time
konvertieren ganz gut mit:
import datetime as dt
utc_time = dt.datetime.strptime(date_str, '%Y-%m-%dT%H:%M%z')
local_time = utc_time.replace(tzinfo=pytz.utc).astimezone(pytz.timezone('Europe/Berlin'))
print(local_time.strftime('%Y-%m-%d %H:%M'))
>>> 2017-11-22 00:00
Allerdings, wenn ich Pandas
verwenden, erhalte ich ein anderes Ergebnis. Es scheint nicht die UTC anzuwenden Offset:
import pandas as pd
pd_date = pd.to_datetime(date_str, utc=True)
print(pd_date.strftime('%Y-%m-%d %H:%M'))
>>> '2017-11-21 22:00'
Und naiv, wenn ich versuche, wie mit dem datetime
Modul den gleichen Prozess zu tun, die Ergebnisse sind immer noch aus:
pd_date = pd.to_datetime(date_str, utc=True)
pd_date = pd_date.replace(tzinfo=pytz.utc).astimezone(pytz.timezone('Europe/Berlin'))
print(pd_date.strftime('%Y-%m-%d %H:%M'))
>>> '2017-11-21 23:00'
Gibt es etwas, was ich nicht verstehe? Benutze ich pd.to_datetime
oder etwas anderes falsch? Auf Python 3.6, Windows 7.
nicht ''2017-11-21T23: 00 + 0100'' spezifiziere Zeitzone' + 0100' (Europa/Berlin) statt UTC?Das ist '22: 00' in UTC –
Also wenn ich richtig verstehe, ist die Zeichenfolge entweder falsch oder das utc-Format falsch angegeben? In welcher Form ist es dann? Es ist in den Daten, die ich habe, also muss ich wissen, wie man damit umgeht. –
Ihre Verwendung von 'replace' zur Berechnung der Ortszeit ist falsch. Sie können einfach 'astimezone (...)' –