为什么这是Python中的默认日期时间?

ni65a41a  于 2023-06-20  发布在  Python
关注(0)|答案(2)|浏览(86)

我试了一个在线的Python解释器

from datetime import datetime
print(datetime.fromtimestamp(0))

可以预见,它会打印1970-01-01 00:00:00。我知道这是Unix时代。然而,我在我的机器上试了一下,它打印了1969-12-31 19:00:00。这可能是什么原因呢?

btxsgosb

btxsgosb1#

请注意,epoch base time是在UTC中,因此除非您的时区完全匹配,否则您将获得稍微不同的时间,根据您在1969/1970的时区偏移进行调整。
这就是为什么您经常会在站点或文件系统上看到时间为1969年12月31日,因为UTC子午线以东的任何系统都将显示为“0”时间。

ruarlubt

ruarlubt2#

这实际上是在问为什么那个函数要应用时区。该方法的实现使用libc的 * localtime * 函数,其 * man page * 如下所述:
函数的作用是:将日历时间timep转换为相对于用户指定时区的分解时间表示形式。该函数的作用就像它调用了tzset(3),并使用有关当前时区的信息设置外部变量tzname
系统调用会自动应用本地时区(如果已知)。有些主机的时区设置为UTC。

相关问题