Calculate Datum Zeitunterschied Python
Ich schreibe eine Zeitdifferenzfunktion, um die Zeitdifferenz (Sekunden) zwischen 2 zu berechnen, wobei Datum und Uhrzeit angegeben werden.
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)
Es scheint nicht den "Monat, Datum, Jahr" zur Berechnung zu nehmen. Es gibt die richtige Berechnung, wenn es im selben "Monat, Datum, Jahr" @ i
>>> t1="01MAR2016:07:11:53"
>>> t2="01MAR2016:16:28:38"
>>> timediff(t1, t2)
33405
Jedoch mit unterschiedlichen "Monat, Datum, Jahr", gibt es die falsche Antwort. Dies berechnet nur die Zeitdifferenz von ~ 18 Stunden (was ~ 65.000 Sekunden ergibt)
>>> t1="02APR2016:06:43:51"
>>> t2="06APR2016:00:58:03"
>>> timediff(t1, t2)
65652
der 24 Stunden anders gibt es 0
>>> t1="01MAR2016:07:11:53"
>>> t2="02MAR2016:07:11:53"
>>> timediff(t1, t2)
0
Die Datums- und Uhrzeitangabe hat das von mir angegebene Zeitformat
>>> 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)
Habe ich etwas vermisst?
Ich habe eine andere Alternative, die Datum und Uhrzeit in Sekunden umwandelt. Aber ich möchte immer noch wissen, warum diese Methode nicht funktioniert.
Meine Alternative
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()))
Beispiel
>>> t2
'02MAR2016:07:11:53'
>>> t1
'01MAR2016:07:11:53'
>>> timediff(t1,t2)
86400.0