2016-08-19 39 views
1

文字列を日付形式に変換しようとしていますが、後でSQLiteデータベースに格納されます。以下はエラーが発生しているコード行です。Python:日付変換エラー

date_object = datetime.strptime(date, '%b %d, %Y %H:%M %Z') 

そして、これは誤りです:

File "00Basic.py", line 20, in spider 
    date_object = datetime.strptime(date, '%b %d, %Y %H:%M %Z') File "C:\Python27\lib\_strptime.py", line 332, in _strptime 
    (data_string, format)) ValueError: time data 'Aug 19, 2016 08:13 IST' does not match format '%b %d, %Y %H %M %Z' 

質問1:どのように私はこのエラーを解決するのですか?

質問2:これは後でSQLiteに日付を保存するための正しいアプローチですか?

ご注意:プログラミングにはまったく新しいものです。

+0

Typo:%H:%Mのコロンが見つかりませんでした。サンプルコードにはありますが、エラーメッセージにはありません。 –

+0

問題は時間帯であり、コロンではありません。 @JamesK編集中 – EndermanAPM

+0

それを指摘していただきありがとうございます。 –

答えて

0

で実行されます際にはPython 3.2でそれが示すように、あなたはタイムゾーンの変換にpytzを使用することができます例外が発生します:

from datetime import datetime 
from pytz import timezone 

s = "Aug 19, 2016 08:13 IST".replace('IST', '') 
print(timezone('Asia/Calcutta').localize(datetime.strptime(s.rstrip(), '%b %d, %Y %H:%M'))) 
#2016-08-19 08:13:00+05:30 
#<class 'datetime.datetime'> 

dateutil文字列の複数のタイムゾーンを処理している場合に使用することをお勧めします。

+1

ありがとう、これは完璧に機能しました! :) –

0

この問題は、フォーマットの%Z(タイムゾーン)部分にあります。 documentationとして はUTC、ESTおよびCSTが有効であるように見えます

%Z Time zone name (empty string if the object is naive). (empty), UTC, EST, CST 

を説明します。

struct_time = time.strptime("Aug 19, 2016 08:13 +0530", '%b %d, %Y %H:%M %z') 

更新:これは正常に動作しますが、あなたがそうのような、任意のUTCオフセットを受け入れ%zパラメータを使用することができ、これを修正するために

(それとも、ただISTを認識しません)それはPython2

+0

ありがとうございますが、これはうまくいきませんでした。もう一度同じエラーが出ます。 'ValueError:time data' 0819年8月19日08:13 +530 'はフォーマット'%b%d、%Y%H:%M%Z 'と一致しません –

+0

気をつけてください、 *、また、0(+0530)は必須です。%zのフォーマットはHHMM – EndermanAPM

+0

+ zが私に別のエラーを与えていました。 'ValueError:' z 'はフォーマット'%b%d、%Y %H:%M%z'' –