2017-03-03 2 views
0

ISO8601の時刻形式の文字列をpython3のdatetimeに変換する方法。ISO8601のPython3 strptimeとタイムゾーン

datetime.strptime(appointment['datetime'], '%Y-%m-%dT%H:%M:%S%z')

ここでの問題は、私は方法がわからないということです。

2017-03-03T11:30:00+04:00
とは方法は、私が試してみてください。 ここに私の時間です.strptimeメソッドの書式パラメータで+4:00タイムゾーンを表します。

+0

をこのリンクhttp://stackoverflow.com/questions/127803/how-to-parse-anを参照してください。 -iso-8601-formatted-dateです。私はこれがpythonのdateutilライブラリの有用なパーサークラスになると思います。 –

答えて

1

Pythonの日時における%zが結腸含まれていないことに注意:

%のZ:(オブジェクトがナイーブである場合は、空の文字列)UTCフォーム+ HHMMまたは-HHMMオフセットなどを+0000、-0400、+1030

ただし、例の日付文字列にはコロンが付いています。 +04:00。そのコロンを含めないだけで、日付を解析することができます。

>>> s = "2017-03-03T11:30:00+04:00" 
>>> datetime.strptime(s[:len(s)-3] + s[len(s)-2:], '%Y-%m-%dT%H:%M:%S%z') 
datetime.datetime(2017, 3, 3, 11, 30, tzinfo=datetime.timezone(datetime.timedelta(0, 14400))) 

私はあなたがこの強力なライブラリpython-dateutil使用することを示唆している:

>>> from dateutil import parser 
>>> parser.parse("2017-03-03T11:30:00+04:00") 
datetime.datetime(2017, 3, 3, 11, 30, tzinfo=tzoffset(None, 14400))