Datetime Fragen

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
mechanicalStore
User
Beiträge: 172
Registriert: Dienstag 29. Dezember 2009, 00:09

Hallo Zusammen,

ich habe zwei verschiedene Quellen von Zeitangaben, die in ein einheitliches Format sollen (die Literale sind hier nur zur Demonstration, die eigentlichen Werte werden eingelesen). Momentan mache ich das mit Regexp, aber es waere natuerlich besser, wenn man das gezielt in ein datetime Format wandeln und von da aus auch wieder gezielt ausgeben koennte.
Im folgenden ist time_example_1 schon im richtigen Format (man koennte das also in einer string Variablen speichern und genauso wieder ausgeben). time_example_2 soll dann das gleiche Format haben. Wenn ich res unter Linux in der Console ausgebe, erhalte ich

Code: Alles auswählen

2024-12-24 21:40:18.250000+00:00
(so kann ich es natuerlich auch wieder nicht gebrauchen). Unter Windows bekomme ich "Value Error: Invalid isoformat string 2024-12-24T21:40:18.25Z" (wieso gibt es hier Unterschiede?).
res2 erzeugt zudem die Meldung "ValueError: time data '24.12.2024 21:40:18.000' does not match format '%d.%m.%y %H:%M:%S'".

Code: Alles auswählen

from datetime import datetime

def main():
    
    time_example_1 = "2024-12-24T21:40:18.25Z"
    time_example_2 = "24.12.2024 21:40:18.000"

    res = datetime.fromisoformat(time_example_1)
    print(res)
    print(type(res))
    
    res2 = datetime.strptime(time_example_2, "%d.%m.%y %H:%M:%S")
    print(res2)
    print(type(res2))

if __name__ == '__main__':
    main()
Benutzeravatar
noisefloor
User
Beiträge: 4172
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der 1. String ist im ISO8601 Format, ab Python 3.11 solltest du damit ein `datetime` Objekt bekommen, wenn du datatime aus datetime importierst und `datetime.fromisoformat(time_example_1)` aufrufst.

Beim 2. Beispiel fehlen bei dir die Millisekunden. So funktioniert es:

Code: Alles auswählen

>>> from datetime import datetime
>>> time_2 = '24.12.2024 21:40:18.000'
>>> datetime.strptime(time_2, '%d.%m.%Y %H:%M:%S.%f')
datetime.datetime(2024, 12, 24, 21, 40, 18)
>>>
Gruß, noisefloor
mechanicalStore
User
Beiträge: 172
Registriert: Dienstag 29. Dezember 2009, 00:09

noisefloor hat geschrieben: Donnerstag 19. Dezember 2024, 17:01
Beim 2. Beispiel fehlen bei dir die Millisekunden. So funktioniert es:

Gruß, noisefloor
Das war es. Funktioniert jetzt. Besten Dank.

Grüße
Antworten