考虑以下代码:
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中的错误
你们是如何解决这个问题的?
答案 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.min
或datetime
模块的问题,问题是由于strftime
请参阅http://bugs.python.org/issue1777412
解决方法是设置date_min > 1900
或仅使用手工制作的字符串作为默认日期值