Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create a Python timestamp with millisecond granularity?

I need a single timestamp of milliseconds (ms) since epoch. This should not be hard, I am sure I am just missing some method of datetime or something similar.

Actually microsecond (µs) granularity is fine too. I just need sub 1/10th second timing.

Example. I have an event that happens every 750 ms, lets say it checks to see if a light is on or off. I need to record each check and result and review it later so my log needs to look like this:

...00250 Light is on ...01000 Light is off ...01750 Light is on ...02500 Light is on 

If I only have full second granularity my log would look like this:

...00 Light is on ...01 Light is off ...01 Light is on ...02 Light is on 

Not accurate enough.

like image 454
Skip Huffman Avatar asked Mar 22 '11 18:03

Skip Huffman


People also ask

How do you add milliseconds to a timestamp in Python?

Use the timedelta() class from the datetime module to add milliseconds to datetime, e.g. result = dt + timedelta(milliseconds=300) . The timedelta class can be passed a milliseconds argument and adds the specified number of milliseconds to the datetime.


2 Answers

import time time.time() * 1000 

where 1000 is milliseconds per second. If all you want is hundredths of a second since the epoch, multiply by 100.

like image 91
nmichaels Avatar answered Oct 05 '22 05:10

nmichaels


In Python, datetime.now() might produce a value with more precision than time.time():

from datetime import datetime, timezone, timedelta  now = datetime.now(timezone.utc) epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) # use POSIX epoch posix_timestamp_millis = (now - epoch) // timedelta(milliseconds=1) # or `/ 1e3` for float 

In theory, time.gmtime(0) (the epoch used by time.time()) may be different from 1970.

like image 38
jfs Avatar answered Oct 05 '22 05:10

jfs