2017-09-02 108 views
0

隨着時間價值的存在:如何將字符串轉換爲DateTime對象

value = '2017-08-31T02:24:29.000Z' 

我嘗試它轉換爲datetime對象:

import datetime 
datetime_object = datetime.datetime.strptime(value, '%Y-%b-%d %I:%M%p') 

但與例外的命令崩潰:

ValueError: time data '2017-08-31T02:24:29.000Z' does not match format '%Y-%b-%d %I:%M%p' 
+0

錯誤消息說時間值是'Jun 1 2005 1:33 PM',但問題是它是'2017-08-31T02:24:29.000Z'。這是什麼? –

+0

好眼!固定。謝謝! – alphanumeric

+0

也許你的答案可以在這裏找到(https://stackoverflow.com/questions/466345/converting-string-into-datetime)。 – Abe

回答

1

首先,你缺少的微秒格式化。

其次,沒有第二個冒號除分秒。

第三,%b運算符用於月份名稱(Jan,Feb等)。你想使用%m。最終格式爲'%Y-%m-%dT%I:%M:%S.%fZ'

這是你的代碼:

datetime_object = datetime.datetime.strptime(value, '%Y-%m-%dT%I:%M:%S.%fZ') 

你應該得到2017-08-31 02:24:29作爲datetime_object的價值。

+0

該格式忽略了時區數據。 –

+0

@ZachGates這是爲什麼? –

+0

看看[這個答案](https://stackoverflow.com/a/3306887/3496038)。 –

2

你應該使用內建Python的datautil模塊而不是date time

所有的
import dateutil.parser 
value = '2017-08-31T02:24:29.000Z' 
result = dateutil.parser.parse(value)