ローカルタイム文字列をUTCに変換するにはどうすればいいですか? 質問する

ローカルタイム文字列をUTCに変換するにはどうすればいいですか? 質問する

ローカル時間の日時文字列をUTC 時間の文字列に変換するにはどうすればよいですか?

以前にもこれをやったことがあるはずですが、見つけることができず、SO が将来私 (および他の人) にこれをやらせる手助けをしてくれることを願っています。

説明: たとえば、2008-09-17 14:02:00ローカル タイムゾーン ( ) の場合、同等の時刻+10を含む文字列を生成したいと思います。UTC2008-09-17 04:02:00

また、http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ただし、DST やその他の問題により、現地時間から UTC 時間への一意の変換がないため、一般にこれは不可能であることに注意してください。

ベストアンサー1

datetime.datetimeまず、文字列を解析して、単純な日付時刻オブジェクトに変換します。これは、タイムゾーン情報が添付されていないのインスタンスです。ドキュメンテーション

使用pytzモジュールには、タイムゾーンと UTC の完全なリストが付属しています。ローカル タイムゾーンが何であるかを把握し、そこからタイムゾーン オブジェクトを構築し、それを操作して、単純な datetime にアタッチします。

最後に、datetime.astimezone()メソッドを使用して日付時刻を UTC に変換します。

文字列「2001-2-3 10:11:12」の、ローカル タイム ゾーン「America/Los_Angeles」を使用したソース コード:

from datetime import datetime   
import pytz

local = pytz.timezone("America/Los_Angeles")
naive = datetime.strptime("2001-2-3 10:11:12", "%Y-%m-%d %H:%M:%S")
local_dt = local.localize(naive, is_dst=None)
utc_dt = local_dt.astimezone(pytz.utc)

そこから、strftime()メソッドを使用して、必要に応じて UTC 日時をフォーマットできます。

utc_dt.strftime("%Y-%m-%d %H:%M:%S")

おすすめ記事