16

文字列形式のタイムゾーン情報を含むタイムスタンプがあり、これを変換して、ローカル タイムゾーンを使用して正しい日付/時刻を表示したいと考えています。たとえば...私は持っています

timestamp1 = 2011-08-24 13:39:00 +0800

これを変換して、タイムゾーンオフセット+1000をdsiplayに変換したいと思います

timestamp2 = 2011-08-24 15:39:00 +1000

pytz を使用してみましたが、オフセット情報の使用方法を示す多くの例が見つかりませんでした。この正確な問題を示すstackoverflowで見つけたもう1つのリンクはhereです。pytzを使用してこれを処理できるより良い方法があることを望んでいました。事前にすべての提案をありがとう:)。

アップデート

ありがとうCixate。あなたと非常によく似た解決策を見つけました。これらのリンクが役に立ちました - LINK1LINK2

全員の利益のためにソリューションを投稿する

from datetime import datetime
import sys, os
import pytz
from dateutil.parser import parse

datestr = "2011-09-09 13:20:00 +0800"
dt = parse(datestr)
print dt
localtime = dt.astimezone (pytz.timezone('Australia/Melbourne'))
print localtime.strftime ("%Y-%m-%d %H:%M:%S")
2011-09-09 15:20:00
4

1 に答える 1

14

datetime.astimezoneは、datetimeオブジェクトを取得すると、基本的な変換を行います。文字列から日時オブジェクトを取得しようとしている場合は、pipinstallpython-dateutilを使用してください。これは次のように簡単です。

>>> from dateutil.parser import parse
>>> from dateutil.tz import tzoffset
>>> dt = parse('2011-08-24 13:39:00 +0800')
datetime.datetime(2011, 8, 24, 13, 39, tzinfo=tzoffset(None, 28800))
>>> dt.astimezone(tzoffset(None, 3600))
datetime.datetime(2011, 8, 24, 6, 39, tzinfo=tzoffset(None, 3600))
于 2011-09-07T03:53:44.923 に答える