by Anonymous » 23 Apr 2025, 11:10
Ich bin verwirrt von einer Inkonsistenz beim Aufrufen von .Strftime () für Daten, die vor-1000 Anzeigen sind, und verwenden Sie Pythons DateTime Modul.
Code: Select all
import datetime
old_date = datetime.date(year=33, month=3, day=28) # 28th March 33AD
old_date.isoformat()
>>> "0033-03-28" # Fine!
old_date.strftime("%Y-%m-%d")
>>> "33-03-28" # Woah - where did my leading zeros go?
# And even worse
datetime.datetime.strptime(old_date.strftime("%Y-%m-%d"), "%Y-%m-%d")
>>>
...
File "", line 1, in
File "/usr/lib/python3.12/_strptime.py", line 554, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/_strptime.py", line 333, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '33-03-28' does not match format '%Y-%m-%d'
Die Dokumentation zeigt Beispiele für %y Erfolge von Jahren mit Null-Padd-Jahren. Selbst mit %g , das als ISO-8601-4-stelliges Jahr dokumentiert ist, zeigt nur zwei Ziffern. Dies, da dies zu offensichtlich erscheint, um in Python ein Fehler zu sein. Ich benutze Python 3.12 auf Ubuntu 24.04.
Ich bin verwirrt von einer Inkonsistenz beim Aufrufen von .Strftime () für Daten, die vor-1000 Anzeigen sind, und verwenden Sie Pythons DateTime Modul.[code]import datetime
old_date = datetime.date(year=33, month=3, day=28) # 28th March 33AD
old_date.isoformat()
>>> "0033-03-28" # Fine!
old_date.strftime("%Y-%m-%d")
>>> "33-03-28" # Woah - where did my leading zeros go?
# And even worse
datetime.datetime.strptime(old_date.strftime("%Y-%m-%d"), "%Y-%m-%d")
>>>
...
File "", line 1, in
File "/usr/lib/python3.12/_strptime.py", line 554, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/_strptime.py", line 333, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '33-03-28' does not match format '%Y-%m-%d'
[/code]
Die Dokumentation zeigt Beispiele für %y Erfolge von Jahren mit Null-Padd-Jahren. Selbst mit %g , das als ISO-8601-4-stelliges Jahr dokumentiert ist, zeigt nur zwei Ziffern. Dies, da dies zu offensichtlich erscheint, um in Python ein Fehler zu sein. Ich benutze Python 3.12 auf Ubuntu 24.04.