Datetime im ISO 8601 Format in lokales Datum und Uhzeit umwandeln?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

Hallo zusammen,

ich bin neu hier und freue mich sehr dieses Forum gefunden zu haben! Ich habe in den letzten Monate den lockdown genutzt und versucht mir ein wenig Python beizubringen, um mein Hobby Aktienhandel zu verbessern und zu automatisieren. Das funktioniert inzwischen auch recht gut und ich habe inzwischen ein kleines Programm welches Daten aufbereitet und analysiert - ich hätte vor ein paar Monaten nicht gedacht, daß ich mal so ein Programm und Code schreiben und verstehen würde, aber dank Internet, Foren, Youtube und viel try&error im Jupyter Notebook habe ich die letzten Monate gute Fortschritte gemacht.

Seit ein paar Tagen scheitere ich aber an einem sehr simplen Problem: Ich habe einen string mit Datum und Uhrzeit im ISO 8601 Format, also YYYY-MM-DD hh:mm:ss +/-UTC offset und möchte diesen String in die lokale bzw. deutsche Datums und Uhrzeit umwandeln, aber ich verstehe es nicht...

Ich habe mit durch die datetime, datelib, pytz usw. module sowie viele entsprechende Beiträge bei stackoverflow.com gelesen und auch die Hälfte geschafft, aber irgendwie kriege ich es nicht hin, die Uhrzeit mit dem UTC offset in die lokale Zeitzone umzuwandeln und ich finde auch keine Beispiele. Dabei müsste das doch ein fast alltägliches Problem sein??

Mein letzter Stand ist folgender Code:

Code: Alles auswählen


from datetime import datetime

ausgabedatetime = "2021-02-26T10:10:27-05:00"

zeitobjekt = datetime.strptime(ausgabedatetime, "%Y-%m-%dT%H:%M:%S%z")

print(zeitobjekt.strftime("%d.%m.%Y %H:%M:%S%Z"))

ausgabedatetime ist ein Beispiel für den erhaltenen datetime string. Daraus mache ich ein Zeitobjekt und passen den dann an.

Das Ergebnis sieht so aus: 26.02.2021 10:10:27UTC-05:00

Wie mache ich nun aus der Uhrzeit nicht UTC-05:00 sondern die lokale MEZ Uhrzeit, also +06:00 und damit 16:10:27??

Für eine Erleuchtung wäre ich wirklich dankbar.

Grüße,
Andy
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Ich verwende dafür das mächtige externe Modul "dateutil" ("python-dateutil" bei PyPI):

Code: Alles auswählen

from dateutil.parser import isoparse
from dateutil.tz import tzlocal

given_value = "2021-02-26T10:10:27-05:00"
original_datetime = isoparse(given_value)
local_datetime = original_datetime.astimezone(tzlocal())
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

Vielen Dank! Problem gelöst :D
Antworten