2017-04-26 10 views
1

api googleカレンダーの形式は、 '2017-04-26T13:00:00 + 02:00'と同じです。ユニコードをdatetime strptime pythonに変換する

私は成功せず、日時に変換しようとした:

datetime.datetime.strptime('2017-04-26T13:00:00+02:00', '%Y-%m-%dT%H:%M:%S+%z') 

エス・エラー私が取得:

'ValueError: time data, '2017-04-26T13:00:00+02:00' does not match format '%Y-%m-%dT%H:%M:%S+%z'

私はこのコードが動作するように取得するにはどうすればよいですか?

+0

スパムにタグを付けないでください。この質問は純粋に日付解析に関するものであり、ユニコードとGoogleとはまったく関係ありません。 –

+0

ありがとうございます。私はその質問を編集した。私はちょっと考えていませんでした。多分疲れている。 – prometeu

+1

%zを使用できます。サポートがあります – FallAndLearn

答えて

2

のstrptimeが%zフォーマットのためのように見える文字列を期待しているため、これは次のとおりです。+0200ない+02:00、すなわち:

>>> datetime.datetime.strptime('2017-04-26T13:00:00+0200', '%Y-%m-%dT%H:%M:%S%z') 
datetime.datetime(2017, 4, 26, 13, 0, tzinfo=datetime.timezone(datetime.timedelta(0, 7200))) 

ので、あなたはどちらか、あなたの状況に応じて、あなたがstrptime()期待に合うように文字列を変更、またはより高いレベルのライブラリを使用して日付を処理できます。 mayaまたはpendulumのように、形式の解析と相対日付管理を処理するための非常に柔軟な機能を提供します。

>>> import pendulum, maya # you need to pip install them 
>>> pendulum.parse('2017-04-26T13:00:00+02:00') 
<Pendulum [2017-04-26T13:00:00+02:00]> 
>>> maya.parse('2017-04-26T13:00:00+02:00') 
<MayaDT epoch=1493204400.0> 
2

parse機能はあなたを助けるでしょう、dateutilを見てみましょう。

>>> from dateutil.parser import parse 
>>> dt = parse('2017-04-26T13:00:00+02:00') 
>>> dt 
datetime.datetime(2017, 4, 26, 13, 0, tzinfo=tzoffset(None, 7200)) 
2

あなたは、日付と時刻に関連する機能を追加する外部モジュールカントー、PyTZArrowのドキュメントで見てみたいことがあります。例えば、矢印で、あなたはこのようにかなり簡単にそれを行うことができます。

2017-04-26 13:00:00+02:00 
<class 'datetime.datetime'> 

アローもできます:

import arrow 

my_arrow_object = arrow.get('2017-04-26T13:00:00+02:00') 
my_datetime_object = my_arrow_object.datetime 

print(my_datetime_object) 
print(type(my_datetime_object)) 

このコードはdatetime.datetimeで得られたタイムスタンプとmy_datetime_objectオブジェクトの種類を、印刷します簡単に "人間化された"タイムストリング( "1時間前"のような "2ヶ月前"など)を簡単に生成することができます。

関連する問題