我正在研究一些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
不同时间的相同时间戳! 我做错了吗?
答案 0 :(得分:6)
没有。 DST在巴西started on October 17, 2010,因此缺少一小时。
答案 1 :(得分:1)
请注意,mktime为您提供当地时间的表示,如果适用于您的系统区域设置,则为夏令时。这可能会导致一些奇怪的行为。
您可能更喜欢calendar.timegm,它可以为您提供UTC时间。