Seite 1 von 1

Datetime Fragen

Verfasst: Donnerstag 19. Dezember 2024, 16:03
von mechanicalStore
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()

Re: Datetime Fragen

Verfasst: Donnerstag 19. Dezember 2024, 17:01
von noisefloor
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

Re: Datetime Fragen

Verfasst: Samstag 21. Dezember 2024, 10:29
von mechanicalStore
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