2018/12/02

[Python] datetime.combine() でタイムゾーンは指定しない方がよい

先日、「datetime のコンストラクタでタイムゾーンは指定しない方がよい」と書いたのですが、 datetime.combine() でも同様の問題が起こりました。

以下のように、日本のタイムゾーンが +9:19 になってしまうのです。

1
2
3
4
5
6
from datetime import datetime, date, time
import pytz
 
d = date(2018,11,1)
datetime.combine(d, time(), tzinfo=pytz.timezone('Asia/Tokyo'))
# 2018-11-01 00:00:00+09:19

コンストラクタと同様、一度 native で作成してから aware に変換するのが良さそうです。

4
5
6
7
d = date(2018,11,1)
dt = datetime.combine(d, time())
pytz.timezone('Asia/Tokyo').localize(dt)
# 2018-11-01 00:00:00+09:00

0 件のコメント: