为什么datetime(1970,1,1).timestamp()受时区的影响? (或者,什么是"时区天真"?)

时间:2016-05-28 08:13:25

标签: python datetime

Python中的datetime对象默认为时区。我认为这意味着如果你构建一个如下所示的datetime对象,你总是得到0(但不是):

from datetime import datetime
print(datetime(1970, 1, 1).timestamp())
# -32400.0 on my machine

如您所见,日期时间对象datetime(1970, 1, 1)明显受到我当地时区的影响。

那么," timezone naive"和"时区感知"实际上意味着我觉得我错过了一些非常基本的东西。

1 个答案:

答案 0 :(得分:2)

时区天真的物品并不意味着它们不受时区的影响,只是因为它们没有足够的信息来区分时间所指的位置。从datetime documentation开始,它说:

  

一个天真的对象没有足够的信息来明确地相对于其他日期/时间对象定位自己。天真物体是代表协调世界时(UTC),当地时间还是其他某个时区的时间完全取决于程序,就像程序一样,特定数字是代表米,英里还是质量。天真的物体易于理解和使用,代价是忽略了现实的某些方面。

这意味着初始化时间可能取决于时区,但之后您无法区分来自哪个时区。另一方面,时区感知,您将能够追溯到特定时间创建的时区和当地原因(日光节省等),以便您可以将其与其他时区感知对象进行比较。