Betrachten Sie die folgenden Geburtstag (wie dob
):2-stellige Jahre mit strptime() ist nicht in der Lage Geburtstag zu analysieren sehr gut
- 1-Juni-68
- 1-Jun-69
Wenn datetime.strptime(dob, '%d-%b-%y')
mit Python analysiert werden Ausbeute:
datetime.datetime(2068, 6, 1, 0, 0)
datetime.datetime(1969, 6, 1, 0, 0)
Nun natürlich sie sollten in der gleichen Dekade geboren werden, aber es ist jetzt nicht einmal im selben Jahrhundert!
Nach dem docs das ist vollkommen gültig Verhalten:
Wenn 2-stellige Jahren angenommen werden, werden sie nach POSIX umgewandelt oder X/Open Standard: Werte 69-99 bis 1969 abgebildet werden -1999, und die Werte 0-68 werden auf 2000-2068 abgebildet.
Ich verstehe, warum die Funktion so eingerichtet ist, aber gibt es eine Möglichkeit, um dies zu umgehen? Vielleicht mit der Definition Ihrer eigenen Bereiche für zweistellige Jahre?
Es ist fast immer eine gute Idee, diese Art von Vernunft Tests zu tun. –
Gute Antwort - abhängig von den tatsächlichen Nutzungssituationen ist das Subtrahieren von 100 Jahren für Daten in der Zukunft wahrscheinlich ein guter Weg, Geburtstage zu bewältigen. –
Das scheint eine vernünftige Antwort für meine Bedürfnisse zu sein. Vielen Dank. – casr