How can I create a Python timestamp with millisecond granularity?

随声附和 提交于 2020-01-01 01:15:14

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!