メモの日々


2025年11月27日(木) [長年日記]

[python] datetimeオブジェクトへ明示的にタイムゾーンを付与する

以前にシステムローカルのタイムゾーンを付与する方法をメモした。

明示的にタイムゾーンを指定したい場合はどうしたらいいか。datetime.astimezone()だとうまくいかない。

>>> import datetime
>>> dt = datetime.datetime(2023, 1, 1)
>>> dt.isoformat()
'2023-01-01T00:00:00'
>>> dt.astimezone(datetime.timezone.utc).isoformat()
'2022-12-31T15:00:00+00:00'

日付が変わってしまった。datetime.replace()を使うとうまくいく。

>>> dt.replace(tzinfo=datetime.timezone.utc).isoformat()
'2023-01-01T00:00:00+00:00'