目前,我试图了解如何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
一切似乎都很好。现在,我想尝试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
蓝色矩形中突出显示的时间信息是吉隆坡时区。因此,我期待运行后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
吗?
相关分类