DT.strptime解释%d错误

时间:2015-04-21 05:33:56

标签: python error-handling decimal strptime

我有:

import datetime as DT

for i in range(len(data)):
    dates[i]=str(DT.datetime.strptime("%s-%s-%s" %(data[i][0][2],data[i][0][0],data[i][0][1]),"%Y-%m-%d"))

其中(data[i][0][2],data[i][0][0],data[i][0][1])分别给出年,月和日。

问题在于我得到ValueError: invalid literal for float(): 1885-05-02 00:00:00,因为它似乎将%d解释为小数而不是一天。

我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

import datetime as DT

for day in data:
    date=DT.datetime.strptime(day, "%Y-%m-%d %H:%M:%S")

答案 1 :(得分:0)

您很早就开始了解%d的结论。首先 - 我在这段代码中看不到浮动转换。第二 - 错误中的字符串包括时间,但你说它应该只是年,月,日。请检查您真正提供的内容。此外,如果您已经拥有了值,则可以自己构造字符串 - 无需首先构造字符串,然后再次解析它并从中获取字符串...

这应该是这样的:

for i, parts in enumerate(data):
    dates[i] = "%s-%02i-%02i 00:00:00" % (parts[0][2], int(parts[0][0]), int(parts[0][1]))

(如果他们已经注册了,你可以放弃int cast)