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

Python 为什么datetime(1970,1,1).timestamp()受时区的影响?(或者,什么是“时区天真”,python,datetime,Python,Datetime,Python中的datetime对象在默认情况下是时区初始对象。我认为这意味着,如果您按照如下方式构造datetime对象,您将始终得到0(但不是): 如您所见,datetime朴素对象datetime(1970,1,1)显然受到我的本地时区的影响 那么,“时区天真”和“时区感知”到底是什么意思呢?我觉得我错过了一些非常基本的东西 时区原始对象并不意味着它们不受时区的影响,只是它们没有足够的信息来区分时间所指的位置。由此可知: 原始对象包含的信息不足,无法相对于其他日期/时间对象明确定位自身。一

Python中的datetime对象在默认情况下是时区初始对象。我认为这意味着,如果您按照如下方式构造datetime对象,您将始终得到0(但不是):

如您所见,datetime朴素对象
datetime(1970,1,1)
显然受到我的本地时区的影响


那么,“时区天真”和“时区感知”到底是什么意思呢?我觉得我错过了一些非常基本的东西

时区原始对象并不意味着它们不受时区的影响,只是它们没有足够的信息来区分时间所指的位置。由此可知:

原始对象包含的信息不足,无法相对于其他日期/时间对象明确定位自身。一个简单的对象是否表示协调世界时(UTC)、本地时间或其他时区的时间完全取决于程序,就像特定数字是否表示米、英里或质量取决于程序一样。天真的对象很容易理解和使用,但代价是忽略了现实的某些方面


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

时区原始对象并不意味着它们不受时区的影响,只是它们没有足够的信息来区分时间所指的位置。由此可知:

原始对象包含的信息不足,无法相对于其他日期/时间对象明确定位自身。一个简单的对象是否表示协调世界时(UTC)、本地时间或其他时区的时间完全取决于程序,就像特定数字是否表示米、英里或质量取决于程序一样。天真的对象很容易理解和使用,但代价是忽略了现实的某些方面

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

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