Beliebiges Datumsformat in datetime konvertieren ....

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
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

Gibt es eine universelle Methode um Datumsangaben in das ISO-Format zu konvertieren (oder in datetime)

Hintergrund:
in meinen string-Daten können Datumsangaben in den unterschiedlichsten Formaten auftauchen:
z.B. dd.mm.jjjj (am häufigsten)
aber auch dd.mm.jj, dd/mm/jjjj, dd/mm/jj oder neuerdings jjjj-mm-dd.

Krankenkassen schicken sogar Versicherungsbestätigungen mit Geburtsdatum als "x. Monat Jahr"

Ich könnte nun alles durchprobieren, aber gibt's da was intelligenteres?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein.
Benutzeravatar
snafu
User
Beiträge: 6745
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

drnicolas hat geschrieben: Samstag 27. April 2024, 07:03 in meinen string-Daten können Datumsangaben in den unterschiedlichsten Formaten auftauchen:
z.B. dd.mm.jjjj (am häufigsten)
aber auch dd.mm.jj, dd/mm/jjjj, dd/mm/jj oder neuerdings jjjj-mm-dd.

Code: Alles auswählen

from dateutil import parser

DATE_STRINGS = ["27.04.2024", "27/04/2024", "27/04/24", "2024-04-27"]

def main():
    for date_string in DATE_STRINGS:
        print(date_string, "->", parser.parse(date_string))

if __name__ == "__main__":
    main()
Falls das Modul bei dir nicht gefunden wird, musst du es via ``pip install python-dateutil`` installieren. Oder bei einem Linux-System ggf. dessen Paket-Verwaltung benutzen.
nezzcarth
User
Beiträge: 1638
Registriert: Samstag 16. April 2011, 12:47

dateparser ist ganz gut darin, allerlei Datums- und Zeitangaben (auch so Sachen wie "gestern") zu parsen.
Benutzeravatar
snafu
User
Beiträge: 6745
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und ``dateparser`` versteht auch das Krankenkassen-Beispiel ("x. Monat Jahr"). :)
Benutzeravatar
__blackjack__
User
Beiträge: 13144
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@snafu: Ja.

Code: Alles auswählen

In [145]: dateparser.parse("5. Februar 2024")
Out[145]: datetime.datetime(2024, 2, 5, 0, 0)
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
snafu
User
Beiträge: 6745
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

__blackjack__ hat geschrieben: Samstag 27. April 2024, 13:12 @snafu: Ja.
Das war keine Frage von mir, sondern eine Feststellung. ;)
Antworten