[Python] 將字串轉成 datetime 物件




在 datetime 模組裡面,用來做字串跟 datetime 物件轉換的方法,主要是下面兩個:

  • strftime(): datetime 轉成字串
  • strptime(): 字串轉成 datetime

在轉換的過程中,需要提供 fmt 字串。請參考下面連結:

但是最近想將 news feed 裡面找到的時間字串做轉換時,遇到一些問題。

我想要轉換成 datetime 物件的時間字串如下:
“Thu, 16 Oct 2014 01:16:17 EDT”

嘗試使用下面程式碼轉換時,產生錯誤:

錯誤訊息如下:

Traceback (most recent call last):

File ““, line 1, in
datetime.strptime(‘Thu, 16 Oct 2014 01:16:17 EDT’,’%a, %d %b %Y %H:%M:%S %Z’)

File “C:\Anaconda\lib_strptime.py”, line 325, in _strptime
(data_string, format))

ValueError: time data ‘Thu, 16 Oct 2014 01:16:17 EDT’ does not match format ‘%a, %d %b %Y %H:%M:%S %Z’

使用如下的程式碼,則正常執行:

上網詢問如何 parse 後端的 ‘EDT’,才知道這個部分是 Python 的 bug。參考連結:%Z in strptime doesn’t match EST and others

如果要正確將字串轉換成 datetime 物件,可以使用下面程式碼:

參考資料:




Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.