The reason is I made a mistake when convert Date time to Unix time(Not local time to UTC or UTC to local time). I treated local time as UTC time and got the wrong results.
Here is the comparison of the correct way and the wrong way:
You can see the below python code, input is "2013-08-23 10:00:00", '%Y-%m-%d %H:%M:%S' which is the same for two converters, but the result in Unix time is DIFFERENT!
>>> calendar.timegm((datetime.datetime.strptime("2013-08-23 10:00:00", '%Y-%m-%d %H:%M:%S')).utctimetuple()) 1377252000 >>> int(str(time.mktime(datetime.datetime.strptime("2013-08-23 10:00:00", '%Y-%m-%d %H:%M:%S').utctimetuple()) )[:-2]) 1377277200
Why?
The reason is calendar.timegm(t) takes a UTC time as input, and time.mktime(t) takes a local time as input! So simple methods, but it took me way way too long time to find out what exactly happens!
Here's the python script:
import sys import datetime import time import calendar #date format TIME_FORMAT = '%Y-%m-%d %H:%M:%S' #hours offset from UTC TIME_OFFSET_TO_UTC = 0 #Converts date time to Unix time def date_to_unix(date_time): delta = datetime.timedelta(0,0,0,0,0,TIME_OFFSET_TO_UTC,0) return calendar.timegm((datetime.datetime.strptime(date_time, TIME_FORMAT) - delta).utctimetuple())
date_to_unix("2014-02-28 16:24:00")