python date.min不会转换回来。为什么?

时间:2011-07-14 17:20:02

标签: python sqlite

考虑以下代码:

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呢?

我正在使用在类的 init 中存储date.min来将其设置为空日期sortof。当我将它保存到sqlite数据库时,我没有这样的Null日期。

我这样做是因为当我从数据库中读回一个空日期时,它会在convertdate函数中引发dbapi2.py中的错误

你们是如何解决这个问题的?

2 个答案:

答案 0 :(得分:4)

您可以坚持使用“ISO 8601格式:YYYY-MM-DD”:

>>> 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

答案 1 :(得分:2)

这不是date.mindatetime模块的问题,问题是由于strftime

的实现中特定于平台的奇怪现象

请参阅http://bugs.python.org/issue1777412

解决方法是设置date_min > 1900或仅使用手工制作的字符串作为默认日期值