def adapt_datetime(dt):
# Get the datetime for the POSIX epoch.
epoch = datetime.datetime.utcfromtimestamp(0.0)
elapsedtime = dt - epoch
# Calculate the number of milliseconds.
seconds = float(elapsedtime.days)*24.*60.*60. + float(elapsedtime.seconds) + float(elapsedtime.microseconds)/1000000.0
return seconds
def convert_datetime(tf):
# Note: strange math is used to account for daylight savings time and
# times in the Eastern (US) time zone (e.g. EDT)
tf = float(tf)
edt_adjustment = 6 * 60. * 60.
if time.localtime(tf).tm_isdst:
edt_adjustment = 5 * 60. * 60.
return datetime.datetime.fromtimestamp(tf+edt_adjustment)
sqlite3.register_adapter(datetime.datetime, adapt_datetime)
sqlite3.register_converter("datetime", convert_datetime)