我有如下格式的字符串時Python的 - 時間數據不匹配格式
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
任何想法哪裏出錯?
我有如下格式的字符串時Python的 - 時間數據不匹配格式
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
任何想法哪裏出錯?
您需要先解析字符串格式化,然後打印出您想要的方式。
>>> 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'
我認爲你的日期格式在字符串中被錯誤地指定。這應該工作:
import datetime
a = '2016-12-10T13:54:15.294'
b= datetime.datetime.strptime(a,'%Y-%m-%dT%H:%M:%S.%f')
print b
錯誤沒有錯,格式字符串甚至沒有接近你想要解析的字符串。
您有{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)
您的格式字符串不正確。
您可以使用日期對象的方法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)
T漢克斯。我跟着這個,現在又有了一個錯誤: 'KeyError:'f'' – Arpit
更多信息:'Python 2.3.4' – Arpit
哇。 Python 2.3!我甚至不知道這樣的版本還在瘋狂。它不工作的原因是因爲在Python 2.6中添加了'f'修飾符 - 我強烈建議您升級。 –