Python: Time.MkTime Devuelve el mismo valor para diferentes fechas
Pregunta
Estaba trabajando en algunos scripts de Python para calcular el tiempo dedicado desde una fecha anterior, y sorprendentemente obtuve un resultado negativo. Me di cuenta de que el problema puede estar en el tiempo.mktime función. Obtenamos este código:
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()))
En mi Python 2.6.4 de 32 bits Linux, la salida es:
2010-10-17 00:00:00 = 1287284400.000000
2010-10-17 01:00:00 = 1287284400.000000
¡La misma marca de tiempo para diferentes momentos! ¿Estoy haciendo algo mal?
Solución
No. DST en Brasil Comenzó el 17 de octubre de 2010, entonces falta una hora.
Otros consejos
Tenga en cuenta que MKTime le brinda la representación de su hora local, con un ahorro de luz de día si corresponde a la localidad de su sistema. Esto puede conducir a algunos comportamientos extraños.
Puede que prefiera calendario.timegm lo que te da tiempo UTC.