我在python 2.4中将字符串转换为时间对象。
d1 = time.strptime(d2, '%Y-%m-%d %H:%M:%S.%%')
这里d2是'2012-11-07 13:41:13.138807'
我收到以下错误。
ValueError: time data did not match format: data=2012-11-07 13:41:13.138807 fmt=%Y-%m-%d %H:%M:%S.%%
任何解决方案?
答案 0 :(得分:4)
您的问题出现在字符串的最后两个字符中:%%
%%
与输入中的%
匹配。您希望匹配微秒,so you should use %f
:
>>> from datetime import datetime
>>> d2 = '2012-11-07 13:41:13.138807'
>>> datetime.strptime(d2, '%Y-%m-%d %H:%M:%S.%f')
datetime.datetime(2012, 11, 7, 13, 41, 13, 138807)
答案 1 :(得分:2)
尝试将.%f
添加到您的字符串(Python 2.6+)中,该字符串应该处理该值(尽管它似乎没有存储):
In [5]: import time
In [6]: d2 = '2012-11-07 13:41:13.138807'
In [7]: d1 = time.strptime(d2, '%Y-%m-%d %H:%M:%S.%f')
In [8]: d1
Out[8]: time.struct_time(tm_year=2012, tm_mon=11, tm_mday=7, tm_hour=13, tm_min=41, tm_sec=13, tm_wday=2, tm_yday=312, tm_isdst=-1)
如果需要,来自@bradleyayers的解决方案将准确捕获您的微秒值,所以如果您需要,我建议使用他的方式:)
由于%f
/ datetime
的{{1}}参数在2.6之前不可用,如果您不需要捕获微秒,您可以尝试这样的事情(分裂时期并采用第一个元素的粗略想法 - 可能会被优化):
time