Python - 时间数据与格式不匹配

时间:2016-12-16 05:47:42

标签: python strptime

我的字符串时间采用以下格式

2016-12-10T13:54:15.294

我使用以下方法格式化时间:

time.strptime(ts, '%b %d %H:%M:%S %Y')

引发错误:
time data did not match format: data=2016-12-10T13:54:15.294 fmt=%a %b %d %H:%M:%S %Y

我出错的任何想法?

4 个答案:

答案 0 :(得分:3)

您需要先将字符串格式化解析,然后按照您想要的方式打印出来。

>>> import datetime
>>> ts = "2016-12-10T13:54:15.294"
>>> parsed = datetime.datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%f')
>>> parsed
datetime.datetime(2016, 12, 10, 13, 54, 15, 294000)
>>> parsed.strftime('%b %d %H:%M:%S %Y')
'Dec 10 13:54:15 2016'

答案 1 :(得分:0)

我认为您的日期格式在字符串中未正确指定。这应该有效:

import datetime
a = '2016-12-10T13:54:15.294'
b= datetime.datetime.strptime(a,'%Y-%m-%dT%H:%M:%S.%f')
print b

答案 2 :(得分:0)

错误没有错,格式字符串甚至不接近您尝试解析的字符串。

您有{year}-{month}-{day}T{hour}:{minute}:{second}.{milliseconds}但尝试使用{weekday name} {month name} {day} {hour}:{minute}:{second} {year}解析它。你有没有从某个地方复制过这个?

According to the documentation,您的格式字符串应该更像%Y-%m-%dT%H:%M:%S.%f

>>> time.strptime('2016-12-10T13:54:15.294', '%Y-%m-%dT%H:%M:%S.%f')
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=10, tm_hour=13, tm_min=54, tm_sec=15, tm_wday=5, tm_yday=345, tm_isdst=-1)

答案 3 :(得分:0)

您的格式字符串不正确。

您可以使用日期对象的strftime方法检查格式字符串。例如:

d = datetime.datetime.now()
print(d.strftime('%Y-%d-%mT%H:%M:%S'))

输出:

Dec 16 11:02:46 2016

但是你有以下格式2016-12-10T13:54:15.294的字符串,所以你只需要更改format字符串:

print(time.strptime(ts, '%Y-%d-%mT%H:%M:%S.%f'))

输出:

time.struct_time(tm_year=2016, tm_mon=10, tm_mday=12, tm_hour=13, tm_min=54, tm_sec=15, tm_wday=2, tm_yday=286, tm_isdst=-1)