В настоящее время я пытался понять, как timezone.localize
работает.
наивное время (без информации о часовом поясе)
Теперь я пытаюсь создать наивное время (без информации о часовом поясе). Я предполагаю, что все будут уважать UTC
>>> d = datetime.datetime.fromtimestamp(1535500800)
>>> d
datetime.datetime(2018, 8, 29, 0, 0)
>>> time.mktime(d.timetuple())
1535500800.0
>>> d.hour
0
(Снимок экрана с https://www.epochconverter.com/, с использованием 1535500800 в качестве метки времени. Красные прямоугольники для часового пояса UTC)
![enter image description here](https://i.stack.imgur.com/0blxo.png)
Кажется, все хорошо. Теперь я хотел бы поэкспериментировать с timezone.localize
datetime с часовым поясом, используя timezone.localize
>>> d = datetime.datetime.fromtimestamp(1535500800)
>>> d
datetime.datetime(2018, 8, 29, 0, 0)
>>> kl_timezone = timezone('Asia/Kuala_Lumpur')
>>> d = kl_timezone.localize(d)
>>> d
datetime.datetime(2018, 8, 29, 0, 0, tzinfo=<DstTzInfo 'Asia/Kuala_Lumpur' +08+8:00:00 STD>)
>>> time.mktime(d.timetuple())
1535500800.0
>>> d.hour
0
(Снимок экрана с https://www.epochconverter.com/, с использованием 1535500800 в качестве метки времени. Синие прямоугольники для часового пояса Куала-Лумпура)
![enter image description here](https://i.stack.imgur.com/bRGGm.png)
Подсветка времени в синем прямоугольнике - это часовой пояс Куала-Лумпура. Следовательно, я ожидаю, что после запуска d = kl_timezone.localize(d)
, d.hour
вернется 8.
Это потому, что
- Учитывая 1535500800 временных меток, жители UTC рассматривают это как 12:00
- Учитывая 1535500800 меток времени, жители Куала-Лумпура рассматривают это как 8:00 утра
Но, d.hour
возвращает 0, даже после того, как я использую kl_timezone.localize(d)
.
Разве d.hour
не должен возвращать 8, потому что в метке времени 1535500800 Куала-Лумпур 8:00 утра?
У меня неправильное ожидание по timezone.localize
?