Python: time.mktime 对不同日期返回相同值
我在写一些Python脚本,用来计算从过去某个日期到现在花了多少时间,结果却意外地得到了一个负数。我意识到问题可能出在time.mktime这个函数上。我们来看一下这段代码:
import time
import datetime
before = datetime.datetime(2010, 10, 17, 0, 0, 0)
after = datetime.datetime(2010, 10, 17, 1, 0, 0)
print "%s = %f" % (before, time.mktime(before.timetuple()))
print "%s = %f" % (after, time.mktime(after.timetuple()))
在我的Linux 32位系统上,使用的是Python 2.6.4,输出结果是:
2010-10-17 00:00:00 = 1287284400.000000
2010-10-17 01:00:00 = 1287284400.000000
同样的时间戳却对应了不同的时间!我是不是哪里搞错了?
2 个回答
1
请注意,mktime会给你本地时间的表示,如果你的系统设置有夏令时的话,它也会考虑进去。这可能会导致一些奇怪的情况。
你可能更喜欢使用calendar.timegm,因为它会给你协调世界时(UTC)。
6
不,巴西的夏令时从2010年10月17日开始,所以少了一个小时。