2018/12/02

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

先日、「[datetime のコンストラクタでタイムゾーンは指定しない方がよい](https://kokufu.blogspot.com/2018/11/python-datetime.html)」と書いたのですが、
`datetime.combine()` でも同様の問題が起こりました。

以下のように、日本のタイムゾーンが `+9:19` になってしまうのです。
```python
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 に変換するのが良さそうです。
```python
`first-line: 4;
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 件のコメント: