Calcular la diferencia de fecha y hora de python

Estoy escribiendo la función timediff para calcular la diferencia de tiempo (segundos) entre 2 dando fecha y hora

def timediff(time1, time2):
    timeformat = '%d%b%Y:%H:%M:%S'
    #time1="01MAR2016:07:11:53"
    #time2="01MAR2016:16:28:38"

    try:
        date_object1 = datetime.strptime(time1, timeformat)
        date_object2 = datetime.strptime(time2, timeformat)
    except ValueError:
        print "time1 format: " + repr(time1)
        print "time2 format: " + repr(time2)
        raise                      

    return abs((date_object2 - date_object1).seconds)  

Parece no llevar el "mes, fecha, año" al cálculo. Da el cálculo correcto si está en el mismo "mes, fecha, año"

>>> t1="01MAR2016:07:11:53"
>>> t2="01MAR2016:16:28:38"
>>> timediff(t1, t2)
33405

Sin embargo con diferente "mes, fecha, año", da la respuesta incorrecta. Esto solo calcula la diferencia de tiempo ~ 18 horas (lo que da ~ 65k segundos)

>>> t1="02APR2016:06:43:51"
>>> t2="06APR2016:00:58:03"
>>> timediff(t1, t2)
65652

O 24 horas diferentes da 0

>>> t1="01MAR2016:07:11:53"
>>> t2="02MAR2016:07:11:53"
>>> timediff(t1, t2)
0

La fecha y hora toma el formato de hora que le doy

>>> t1="01MAR2016:07:11:53"
>>> t2="02MAR2016:07:11:53"
>>> datetime.strptime(t1, timeformat)
datetime.datetime(2016, 3, 1, 7, 11, 53)
>>> datetime.strptime(t2, timeformat)
datetime.datetime(2016, 3, 2, 7, 11, 53)

¿Me estoy perdiendo algo?

Tengo otra alternativa que convierte la fecha y hora en segundos. Pero todavía quiero saber por qué este método no funciona.

Mi alternativa

def timediff(time1, time2):
    timeformat = '%d%b%Y:%H:%M:%S'
    t1 = datetime.strptime(time1, timeformat)
    t2 = datetime.strptime(time2, timeformat)

    return abs(time.mktime(t1.timetuple()) - time.mktime(t2.timetuple()))

Ejemplo:

>>> t2
'02MAR2016:07:11:53'
>>> t1
'01MAR2016:07:11:53'
>>> timediff(t1,t2)
86400.0

Respuestas a la pregunta(1)

Su respuesta a la pregunta