2016-05-18 48 views
-1

以下日期正在爲看起來有效的日期時間字符串返回值錯誤。爲什麼?Python strptime以明顯的有效格式返回ValueError

from datetime import datetime 

dateFormat = "%A %b %d, %Y %I:%M %p" 
myDateStr = "Sunday May 22, 2016 00:47 AM" 

try: 
    date_object = datetime.strptime(myDateStr,dateFormat) 
    print(date_object) 
except ValueError as e: 
    print(e) 

我會承認有點困惑。它已經在兩個平臺上測試過,一般都能正常工作。

謝謝

爲了讀者的利益,這裏是格式掩碼。

  • %作爲語言環境的全名的星期幾。星期日,星期一,...,星期六(en_US);
  • %b(%B)月作爲locale的縮寫名稱。 1月,2月,...,12月(en_US);
  • %d作爲零填充的十進制數的月份的日期,01,02,...,31
  • %Y以十進制數表示的世紀。 1970,1988,2001,2013
  • %I小時(12小時制)作爲零填充十進制數。 01,02,...,12
  • %M作爲零填充十進制數分鐘。 00,01,...,59
  • %p區域設置等同於AM或PM。 AM,PM(en_US);
+0

「一般工作」所以問題是什麼? –

+1

不應該格式字符串爲'%A%b%d,%Y%H:%M%p''這對我有效嗎? – EdChum

+0

追溯哪裏? –

回答

2

您正在使用%I,正如您所說的是12小時格式,但您在字符串中使用了24小時格式,即00:47

00:47 AM不是任何格式的有效時間規範。

00:47 AM更改爲12:47 AM%I改爲%H修復此問題。

+0

你說得對。我的恐懼是,我無法控制的源使用12/24格式的混搭。嘿浩。 –

+0

@ Davies-Barnard然後你可以先用'%I'嘗試,然後在except塊中使用'%H'。 – DeepSpace

+0

這就是我所做的:) –

相關問題