Я работал над некоторыми сценариями 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()))
На моем 32-битном Linux Python 2.6.4 вывод:
2010-10-17 00:00:00 = 1287284400.000000
2010-10-17 01:00:00 = 1287284400.000000
Одна и та же временная метка для разного времени! Я делаю что-то неправильно?