2016-05-18 13 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) 

私は少し混乱することを認めます。 2つのプラットフォームでテストされ、一般的に動作します。ここでは、読者の利益のために

おかげ

は、書式マスクです。

  • %ロケールのフルネームとしての曜日。日曜日、月曜日、...、土曜日(en_US);
  • %b(%B)ロケールの省略名としての月。 Jan、Feb、...、Dec(en_US);
  • %d 0が埋め込まれた10進数、01,02、...、31のような日。
  • %Y年を10進数で表した年。 1970年、1988年、2001年、2013年
  • %ゼロ詰め10進数としての時間(12時間単位)。 01,02、...、12
  • %M詰め込みゼロの10進数です。 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 AM12:47 AMまたは%I%Hを変更すると、この問題が修正されます。

+0

あなたは正しいです。私が恐れているのは、私が使用しているソースが12/24フォーマットのマッシュアップを使用していることです。ヘイホ。 –

+0

@ Davies-Barnard次に、 '%I'で最初に試してから、exceptブロックで'%H'を使うことができます。 – DeepSpace

+0

これは私がやったことです:) –

関連する問題