我试了一个在线的Python解释器
from datetime import datetime print(datetime.fromtimestamp(0))
可以预见,它会打印1970-01-01 00:00:00。我知道这是Unix时代。然而,我在我的机器上试了一下,它打印了1969-12-31 19:00:00。这可能是什么原因呢?
1970-01-01 00:00:00
1969-12-31 19:00:00
btxsgosb1#
请注意,epoch base time是在UTC中,因此除非您的时区完全匹配,否则您将获得稍微不同的时间,根据您在1969/1970的时区偏移进行调整。这就是为什么您经常会在站点或文件系统上看到时间为1969年12月31日,因为UTC子午线以东的任何系统都将显示为“0”时间。
ruarlubt2#
这实际上是在问为什么那个函数要应用时区。该方法的实现使用libc的 * localtime * 函数,其 * man page * 如下所述:函数的作用是:将日历时间timep转换为相对于用户指定时区的分解时间表示形式。该函数的作用就像它调用了tzset(3),并使用有关当前时区的信息设置外部变量tzname系统调用会自动应用本地时区(如果已知)。有些主机的时区设置为UTC。
2条答案
按热度按时间btxsgosb1#
请注意,epoch base time是在UTC中,因此除非您的时区完全匹配,否则您将获得稍微不同的时间,根据您在1969/1970的时区偏移进行调整。
这就是为什么您经常会在站点或文件系统上看到时间为1969年12月31日,因为UTC子午线以东的任何系统都将显示为“0”时间。
ruarlubt2#
这实际上是在问为什么那个函数要应用时区。该方法的实现使用libc的 * localtime * 函数,其 * man page * 如下所述:
函数的作用是:将日历时间timep转换为相对于用户指定时区的分解时间表示形式。该函数的作用就像它调用了tzset(3),并使用有关当前时区的信息设置外部变量tzname
系统调用会自动应用本地时区(如果已知)。有些主机的时区设置为UTC。