timezone.localize 无法按预期工作

目前,我试图了解如何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

http://img4.mukewang.com/60bc69e500018c2809900274.jpg

一切似乎都很好。现在,我想尝试timezone.localize


使用 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

http://img.mukewang.com/60bc69f10001530909960271.jpg

蓝色矩形中突出显示的时间信息是吉隆坡时区。因此,我期待运行后d = kl_timezone.localize(d)d.hour将返回 8。

这是因为

  • 给定 1535500800 时间戳,UTC 居民将其视为 12:00 am

  • 鉴于 1535500800 时间戳,吉隆坡居民将其视为上午 8:00

但是,d.hour即使在我使用kl_timezone.localize(d).

不是d.hour应该返回 8,因为在时间戳 1535500800,吉隆坡是上午 8:00?

我有错误的期望timezone.localize吗?


梵蒂冈之花
浏览 197回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python