python date.min не конвертирует обратно. Зачем? - PullRequest
3 голосов
/ 14 июля 2011

Рассмотрим этот код:

datestring = date.min.strftime("%d-%m-%Y")
date = datetime.strptime(datestring,"%d-%m-%Y")

Возникает следующая ошибка:

Traceback (most recent call last):   File "D:/Dev/foo.py", line 37, in <module>
    datestring = date.min.strftime("%d-%m-%Y") ValueError: year=1 is before 1900; the datetime strftime() methods require year >= 1900

Почему минимальная дата не 1900, тогда ???

Я использую хранилище date.min в init класса, чтобы установить для него пустую дату sortof. Когда я сохраняю это в базе данных sqlite, у меня нет нулевой даты таким образом.

Я делаю это потому, что когда я читаю пустую дату из БД, возникает ошибка в dbapi2.py в функции convertdate

Как вы, ребята, решаете это?

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Вы можете вставить «формат ISO 8601: ГГГГ-ММ-ДД»:

>>> from datetime import date, datetime
>>> date_str = date.min.isoformat()
>>> print date_str
0001-01-01
>>> date_obj = datetime.strptime(date_str,"%Y-%m-%d")
>>> print date_obj
0001-01-01 00:00:00
2 голосов
/ 14 июля 2011

это не проблема с date.min или datetime модулем, проблема из-за специфических для платформы странностей в реализациях strftime

см. http://bugs.python.org/issue1777412

Обходным путем было бы установить date_min > 1900 или просто использовать вручную созданную строку для значения даты по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...