Я этого не понимал, но, по-видимому, функция Python strftime
не поддерживает даты до 1900 года:
>>> from datetime import datetime
>>> d = datetime(1899, 1, 1)
>>> d.strftime('%Y-%m-%d')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: year=1899 is before 1900; the datetime strftime() methods require year >= 1900
Я уверен, что я мог сам что-то взломать, но считаю, что функция strftime
существует по какой-то причине (и есть также причина, по которой она не может поддерживать даты до 1900 года). Мне нужно иметь возможность поддерживать даты до 1900 года. Я бы просто использовал str
, но там было слишком много вариаций. Другими словами, он может иметь или не иметь микросекунды, или может иметь или не иметь часовой пояс. Есть ли какое-либо решение для этого?
Если это имеет значение, я делаю это, чтобы я мог записать данные в текстовый файл и загрузить его в базу данных с помощью Oracle SQL * Loader.
Я по существу закончил работу с Алексом Мартелли. Здесь более полная реализация:
>>> from datetime import datetime
>>> d = datetime.now()
>>> d = d.replace(microsecond=0, tzinfo=None)
>>> str(d)
'2009-10-29 11:27:27'
Единственное отличие состоит в том, что str(d)
эквивалентно d.isoformat(' ')
.