我正在尝试以ISO日期格式解析日期,但由于我不理解的原因,我使用的模式无效。
来自shell:
>>> s
datetime.date(2014, 1, 3)
>>> str(s)
'2014-01-03'
>>> datetine.strptime(str(s),"%y-%m-%d").date()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python27\lib\_strptime.py", line 325, in _strptime
(date_string, format))
ValueError: time data '2014-01-30' does not match format '%y-%m-$d'
但2014-01-03
应与%y-%m-%d
匹配,对吧?为什么我会收到此错误?
答案 0 :(得分:4)
来自docs(强调我的):
%y 年没有世纪作为零填充十进制数。 00,01,...,99
%Y 年份以世纪作为十进制数字。 1970年,1988年,2001年,2013年
因此,当%y-%m-%d
需要14-01-03
时,2014-01-03
期待%Y-%m-%d
。
答案 1 :(得分:3)
大小写的区别:
>>> datetime.datetime.strptime('2014-01-03', '%Y-%m-%d').date()
datetime.date(2014, 1, 3)
>>> datetime.datetime.strptime('14-01-03', '%y-%m-%d').date()
datetime.date(2014, 1, 3)