Python | error de desbordamiento mktime

He estado buscando por toda la red y no pude encontrar una solución adecuada para este problema

OverflowError: mktime argument out of range 

El código que causa esta excepción.

  t = (1956, 3, 2, 0, 0, 0, 0, 0, 0) ser = time.mktime(t) 

Me gustaría saber el motivo real de esta excepción, algunos dicen que la fecha no está en un rango válido pero no tiene ningún sentido para mí, y si hay un rango, podría ser. Depende del sistema que estemos utilizando. También me gustaría saber una buena solución para este problema.

Gracias.

time.mktime llama a la función mktime subyacente desde la biblioteca C de la plataforma. Por ejemplo, el código anterior que publicaste funciona perfectamente bien para mí en Mac OS X, aunque devuelve un número negativo ya que la fecha es anterior a la época de Unix. Entonces, la razón es que la implementación mktime su plataforma probablemente no admita fechas antes de la época de Unix. Puede usar el módulo datetime de Python para construir un objeto datetime correspondiente a la fecha anterior, restarlo de otro objeto datetime que representa la época de Unix y usar el objeto timedelta calculado para obtener el número de segundos desde la época:

 from datetime import datetime epoch = datetime(1970, 1, 1) t = datetime(1956, 3, 2) diff = t-epoch print diff.days * 24 * 3600 + diff.seconds 

Actualización : si está usando Python 2.7 o superior, simplemente podría usar print diff.total_seconds() como se indica a continuación en el comentario de Chad Miller.