问题
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.
回答1:
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.
回答2:
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_micros = (now - epoch) // timedelta(microseconds=1)
posix_timestamp_millis = posix_timestamp_micros // 1000 # or `/ 1e3` for float
In theory, time.gmtime(0) (the epoch used by time.time()) may be different from 1970.
来源:https://stackoverflow.com/questions/5395872/how-can-i-create-a-python-timestamp-with-millisecond-granularity