Python:time.mktime为不同的日期返回相同的值

时间:2011-03-22 14:28:30

标签: python datetime 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 个答案:

答案 0 :(得分:6)

没有。 DST在巴西started on October 17, 2010,因此缺少一小时。

答案 1 :(得分:1)

请注意,mktime为您提供当地时间的表示,如果适用于您的系统区域设置,则为夏令时。这可能会导致一些奇怪的行为。

您可能更喜欢calendar.timegm,它可以为您提供UTC时间。