Convert timedelta to total seconds
You have a problem one way or the other with your
(1) If all you need is the difference between two instants in seconds, the very simple
time.time() does the job.
(2) If you are using those timestamps for other purposes, you need to consider what you are doing, because the result has a big smell all over it:
gmtime() returns a time tuple in UTC but
mktime() expects a time tuple in local time.
I'm in Melbourne, Australia where the standard TZ is UTC+10, but daylight saving is still in force until tomorrow morning so it's UTC+11. When I executed the following, it was 2011-04-02T20:31 local time here ... UTC was 2011-04-02T09:31
import time, datetime t1 = time.gmtime() t2 = time.mktime(t1) t3 = datetime.datetime.fromtimestamp(t2)print t01301735358.78print t1time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=9, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=0) ### this is UTCprint t21301700663.0print t32011-04-02 10:31:03 ### this is UTC+1tt = time.time(); print tt1301736663.88print datetime.datetime.now()2011-04-02 20:31:03.882000 ### UTC+11, my local timeprint datetime.datetime(1970,1,1) + datetime.timedelta(seconds=tt)2011-04-02 09:31:03.880000 ### UTCprint time.localtime()time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=20, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=1) ### UTC+11, my local time
You'll notice that t3, the result of your expression is UTC+1, which appears to be UTC + (my local DST difference) ... not very meaningful. You should consider using
datetime.datetime.utcnow() which won't jump by an hour when DST goes on/off and may give you more precision than
More compact way to get the difference between two datetime objects and then convert the difference into seconds is shown below (Python 3x):
from datetime import datetime time1 = datetime.strftime('18 01 2021', '%d %m %Y') time2 = datetime.strftime('19 01 2021', '%d %m %Y')difference = time2 - time1difference_in_seconds = difference.total_seconds()