【发布时间】:2012-04-12 11:46:44
【问题描述】:
我正在使用datetime.fromtimestamp 将纪元时间转换为本地时间。我发现datetime.fromtimestamp 在某个时间点会发生一小时的离散跳跃,我完全不知道为什么会这样做。
(我也在使用time.mktime 将日期时间对象转换为纪元时间,as suggested by Raymond Hettinger。我不确定这是否是这个问题的相关信息,所以我这样说是为了以防万一。)
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time, datetime
>>> def datetime_to_epoch_time(datetime_):
... return time.mktime(datetime_.timetuple()) + datetime_.microsecond / 1e6
...
选择一个特定的纪元时间:
>>> x = datetime_to_epoch_time(datetime.datetime(2012, 3, 30, 3, 0))
使用fromtimestamp 将其转换为日期时间:
>>> datetime.datetime.fromtimestamp(x)
datetime.datetime(2012, 3, 30, 3, 0)
我们的时间是凌晨 3 点。
现在让我们转换正好在一秒之前的时间:
>>> datetime.datetime.fromtimestamp(x-1)
datetime.datetime(2012, 3, 30, 1, 59, 59)
我们突然到了凌晨 1:59!
发生了什么?我知道这样的事情会在闰日前后发生,但是从 3 月 30 日开始是闰日吗?
我应该注意,我只在 Linux 上遇到过这种情况,而在 Windows 上没有。而且我认为不同的 Linux 计算机(在不同的时区)有不同的时间点,fromtimestamp 进行跳转。
【问题讨论】:
标签: python datetime calendar epoch