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.
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.
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.
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With