Seite 1 von 1
UNIX Umwandlung --> UTC oder lokale Zeit kommt raus?
Verfasst: Donnerstag 19. September 2019, 08:57
von karou
Hallo an alle,
ich arbeite noch nicht lang mit Python und habe ein Programm geschrieben, das UNIX Zeitstempel in lesbare Zeit umwandeln soll. Die Zeitstempel sind in einer Datenbank gespeichert. Für die Umsetztung habe ich folgenden Code genutzt:
Ich habe händisch einige Zeitstempel umgewadelt und festgestellt, dass z.B. Zeitstempel vom 10.09.2019 10:00 Uhr von meinem Programm umgewandelt werden zu 10.09.2019 9:00 Uhr. Ich glaube es liegt daran das die Zeit in UTC umgerechnet wird, bin mir aber nicht sicher ob das an dem oben eingefügten Code liegt. Der einziege andere Code den ich im Zusammenhang mit den Zeitstempeln verwende ist folgender Code:
Code: Alles auswählen
#Sortieren der Zeitstempel
stamp_keys.sort(key=lambda date: datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f'))
Kann ich einen der genannten Befehle so umstellen das er mir lokale Zeit ausgibt und keine UTC Zeit?
Danke für eure Hilfe
Re: UNIX Umwandlung --> UTC oder lokale Zeit kommt raus?
Verfasst: Donnerstag 19. September 2019, 09:17
von Sirius3
Wenn Du mit Zeitstempeln arbeiten willst, wie bei Deinem sort-Beispiel, dann solltest Du das entweder als UNIX-Timestamp lassen, oder mit Datetime-Objekten. Auf keinen Fall darfst Du die String-Repräsentation in lokaler Zeit dafür verwenden, das gibt mindestens einmal im Jahr Fehler.
Erst wenn es wirklich um die Ausgabe geht, also das Schreiben auf den Bildschirm, für die menschliche Verarbeitung, kannst Du einen Datumsobjekt in einen String umwandeln. Für Zeitzonen-Umrechnung gibt es z.B. pytz.
Re: UNIX Umwandlung --> UTC oder lokale Zeit kommt raus?
Verfasst: Donnerstag 19. September 2019, 09:39
von karou
Ah Ok ich kann versuchen das Umzustellen!
Wie wäre das wenn ich die Umwandlung so wie sie jetzt ist lasse? Würde der Befehl Winter und Sommerzeit beachten und immer die richtige UTC-Zeit ausgeben? Ich hab bis jetzt nur Testdatensätze aus der Winterzeit bekommen um mein Programm zu testen und in der Winterzeit hat das immer geklappt.
Re: UNIX Umwandlung --> UTC oder lokale Zeit kommt raus?
Verfasst: Donnerstag 19. September 2019, 10:13
von __blackjack__
@karou: Welcher Befehl? Und was gibt es bei Sommer und Winterzeit bei UTC-Zeit zu beachten? UTC kennt das doch gar nicht‽ Die erste Frage die man beantworten müsste ist was die Eingabedaten die Du hast bedeuten – für welche Zeitzone gelten die? Sind das lokale Zeiten oder sind die UTC? So wie `to_datetime()` aufgerufen wird, sollten das besser Millisekunden seit 1970-01-01 Mitternacht in UTC sein.
Falls das zutrifft und Du gerne lokale Zeit haben möchtest, müsstest Du ``utc=True`` angeben und danach mit der `tz_convert()`-Methode beispielsweise nach "Europe/Berlin" konvertieren.
Re: UNIX Umwandlung --> UTC oder lokale Zeit kommt raus?
Verfasst: Donnerstag 19. September 2019, 14:33
von karou
Die eingegeben Werte sind MEZ Zeiten abgespeichert in UNIX und deswegen muss man wenn man sie in UTC Umrechnet und sie z.B. nach Din 5008 ausgibt Sommer und Winterzeit beachten!
Aber ich hab Tests mit Zeiten aus diesem Monat durchgeführt und das hat meine Frage beantwortet!