2016-10-17 10 views
2

このトピックに関する多くの質問を確認しましたが、私のエラーを見つけることができません。日時フォーマットが内容と一致しません

date = "2016/07/20" 
time = "11:44:20.920" 

date_time = datetime.strptime(date + " " + time, '%y/%m/%d %H:%M:%S.%f') 

私が得るエラーは以下の通りです:

私のコードは、のように簡略化することができ

Traceback (most recent call last): 
    File "adma_shortener.py", line 50, in <module> 
    adma_time[ii] = datetime.strptime(a, '%y/%m/%d %H:%M:%S.%f').replace(microsecond=0) 
    File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime 
    (data_string, format)) 
ValueError: time data '2016/07/20 11:44:20.920' does not match format '%y/%m/%d %H:%M:%S.%f' 

誰かが私のエラーを見ることができますか?事前

答えて

6

で おかげで年間ディレクティブは大文字でなければなりません:ゼロ詰め進数10進数としての世紀と

%Y年などの世紀なし

date_time = datetime.strptime(date + " " + time, '%Y/%m/%d %H:%M:%S.%f') 
#            ^

%y年。


参考:

http://strftime.org/

2

%y "ゼロ詰め進数としての世紀なしの年。" のために指定され、2桁の番号を意味しています。代わりにを使用してください。

1

datetime directivesに詳しくない方は、dateutil.parserをご利用ください。はるかに簡単です。例:

>>> import dateutil.parser 
>>> date = "2016/07/20" 
>>> time = "11:44:20.920" 
>>> my_date = dateutil.parser.parse('{date} {time}'.format(date=date, time=time)) 
>>> my_date 
datetime.datetime(2016, 7, 20, 11, 44, 20, 920000) 
+0

これは特に良いアドバイスではありません。日付の形式がわかっているならば、 'strptime'を絶対に使うべきです。なぜなら、ずっと高速ですし、誤った日付入力で誤ってマッチするかもしれないからです。 – Paul

関連する問題