2

I was trying to convert a date string to a valid date python format, but I got a erroneous date:

>from datetime import datetime
>mydate = '300413' # is 2013-04-30
>print datetime.strptime(mydate,'%d%m%Y')
>0413-02-01 00:00:00

How can I parse to a valid date, this date string?

4

3 回答 3

5

文档中所列,%Y是四位数年份的代码。您应该使用两位数年份的代码,%y.

于 2013-05-03T23:32:01.177 回答
3

如果您阅读文档中的Behaviorstrptime()strftime()Behavior%Y ,则意味着:

以世纪为十进制数的年份 [0001,9999]

但是你给它一个两位数的年份,没有世纪。

那应该提高一个ValueError. 例如,如果您尝试使用 2.5.6、2.7.2、3.2.1 或 3.3.0,您会得到:

ValueError:时间数据“300413”与格式“%d%m%Y”不匹配

但是,由于旧版 Python 中的一个错误,您可能会得到垃圾。

如果您想要 2 位数的年份,请使用%y, when 表示:

没有世纪的年份作为十进制数 [00,99]。

于 2013-05-03T23:34:09.460 回答
2

尝试:

print datetime.strptime('300413','%d%m%y')
2013-04-30 00:00:00

'%Y'只改变'%y'

于 2013-05-03T23:35:37.893 回答