如何创建带有毫秒精度的Python时间戳?
我需要一个从1970年1月1日开始到现在的时间戳,单位是毫秒(ms)。这应该不难,我肯定是漏掉了某个datetime
的方法或者类似的东西。
其实微秒(µs)的精度也可以,我只需要比1/10秒更精确的时间。
举个例子,我有一个事件每750毫秒发生一次,比如说它检查一下灯是开还是关。我需要记录每次检查的结果,方便以后查看,所以我的日志需要像这样:
...00250 Light is on
...01000 Light is off
...01750 Light is on
...02500 Light is on
如果我只有整秒的精度,我的日志就会变成这样:
...00 Light is on
...01 Light is off
...01 Light is on
...02 Light is on
这样不够准确。
3 个回答
4
请注意,虽然你可以用time.time()
乘以你想要的精度,但这并不意味着你的设备真的能达到那个精度。例如,在Windows系统上,它的精度只有正负1毫秒(来源)。 为了提高准确性,请使用:
import time
now_ns = time.time_ns() # Time in nanoseconds
now_ms = int(now_ns / 1000000)
这个方法只适用于Python 3.7及以上版本
14
在Python中,datetime.now()
可能会给出比 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
理论上,time.gmtime(0)
(这是 time.time()
使用的起始时间)可能和 1970
不一样。
66
import time
time.time() * 1000
这里的1000是指每秒有1000毫秒。如果你只想要从纪元(也就是1970年1月1日)开始到现在的时间,以百分之一秒为单位的话,就把这个值乘以100。