converting epoch time with milliseconds to datetime
Use datetime.datetime.fromtimestamp
:
>>> import datetime>>> s = 1236472051807 / 1000.0>>> datetime.datetime.fromtimestamp(s).strftime('%Y-%m-%d %H:%M:%S.%f')'2009-03-08 09:27:31.807000'
%f
directive is only supported by datetime.datetime.strftime
, not by time.strftime
.
UPDATE Alternative using %
, str.format
:
>>> import time>>> s, ms = divmod(1236472051807, 1000) # (1236472051, 807)>>> '%s.%03d' % (time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)'2009-03-08 00:27:31.807'>>> '{}.{:03d}'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)'2009-03-08 00:27:31.807'
I'm a pendulum fan... so...
import pendulumpendulum.from_timestamp(1236472051807/1000.0,tz='America/Toronto')
outputs:
DateTime(2019, 12, 20, 10, 55, 10, tzinfo=Timezone('America/Toronto'))
For all the searches looking for internalDate
for the Gmail API... the above is what works for me and is more accurate than the Date
header.