Код: Выделить всё
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'
Это вызвало проблему в приложении, в котором пользователь может ввести дату, и если они вводят в старую дату, исключение, приведенное выше, при попытке конвертировать дату, в течение которого что-то наказывает, что это будет что-то, что будет что-то, что будет что-то, что будет что-то, что будет что-то, что будет что-то, что будет что-то накапливаемое. Это кажется слишком очевидным, чтобы быть ошибкой в Python. Я использую Python 3.12 на Ubuntu 24.04.
Подробнее здесь: https://stackoverflow.com/questions/795 ... -in-python