Converting date to milliseconds since 1-1-70

gry at ll.mit.edu gry at ll.mit.edu
Tue Jan 24 21:33:58 CET 2006


NateM wrote:
> How do I convert any given date into a milliseconds value that
> represents the number of milliseconds that have passed since January 1,
> 1970 00:00:00.000 GMT?
> Is there an easy way to do this like Date in java?
> Thanks,
> Nate

The main module for dates and times is "datetime"; so

>>> import datetime
>>> t=datetime.datetime.now()
>>> print t
2006-01-24 15:13:35.012755

To get at the "epoch" value, i.e. seconds since 1/1/1970, use the
"time" module:

>>> import time
>>> print time.mktime(t.timetuple())
1138133615.0

Now just add in the microseconds:
>>> epoch=time.mktime(d.timetuple())+(t.microsecond/1000000.)
>>> print epoch
1138133615.01

Use the "%" formatting operator to display more resolution:
>>> print '%f' % t
1138133615.012755

Note that the floating point division above is not exact and could
possibly
mangle the last digits.

Another way to this data is the datetime.strftime member:

>>> print d.strftime('%s.%%06d') % d.microsecond
'1138133615.012755'

This gets you a string, not a number object.  Converting the string to
a number again risks inaccuracy in the last digits:
>>> print float( '1138133615.012755')
1138133615.0127549




More information about the Python-list mailing list