`datetime.strftime` и `datetime.strptime` интерпретируют %Y по-разному

Я использую оператор, как показано ниже, для создания объекта datetime из строки:

t = datetime.strptime("0023-10-10", "%Y-%m-%d")

Позже где-то в моем коде используется объект t и вызывается метод strftime с той же строкой формата:

t. strftime("%Y-%m-%d")

Это вызывает ValueError: year=23 is before 1900; методы datetime strftime() требуют year >= 1900.

Похоже, что проверка ввода %Y отличается в этих двух похожих методах. Поэтому мне нужно сделать следующее, чтобы убедиться, что я не принимаю некоторые плохие годы, такие как 23:

try:
    format = "%Y-%m-%d"
    t = datetime.strptime("0023-10-10", format)
    t.strftime(format)
except ValueError:
    ...

Интересно, есть ли лучший способ сделать эту проверку?

6
задан satoru 28 November 2011 в 11:07
поделиться