次の日付/時刻を含む JSON 文字列を返す API を使用しています。
2013-03-14T14:15:23-07:00
日付と時刻を秒単位で取得します。しかし、最後の 5 文字は私を混乱させます。それはUTCオフセットだと思います。(山の時間) どうすればよいかわかりません。上記の文字列を python の日付/時刻と比較することです。Tも私を捨てています。
上記と一致するようにPythonの日付/時刻文字列をエンコードするにはどうすればよいですか?
python-dateutil
ライブラリ ( https://crate.io/packages/python-dateutil/ ) を使用すると、その値をdatetime
.
>>> dateutil.parser.parse('2013-03-14T14:15:23-07:00')
datetime.datetime(2013, 3, 14, 14, 15, 23, tzinfo=tzoffset(None, -25200))
ISO 8601日付形式を見ています。パッケージを使用して解析することも、自分で行うこともできます。
datetime.strptime を使用して解析できます。
>>> ts='2013-03-14T14:15:23-07:00'
>>> datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')
datetime.datetime(2013, 3, 14, 14, 15, 23)
次に、時間デルタを加算/減算します (「ナイーブ」オブジェクトの場合):
>>> datetime.timedelta(hours=int(ts[-6:-3]))
datetime.timedelta(-1, 61200)
それで:
>>> d=datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')+datetime.timedelta(hours=int(ts[-6:-3]))
>>> d
datetime.datetime(2013, 3, 14, 7, 15, 23)
トリッキーな部分は、TZ がオプションであり、時間オフセットを加算/減算するか、日付オブジェクトにタイムゾーンを設定するかです。