如何在Python中获得以毫秒为单位的当前时间?


当前回答

def TimestampMillisec64():
    return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000) 

其他回答

def TimestampMillisec64():
    return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000) 

如果你关心测量流逝的时间,你应该使用单调时钟(python 3)。例如,如果一个NTP查询调整了你的系统时间,这个时钟不会受到系统时钟更新的影响。

>>> import time
>>> millis = round(time.monotonic() * 1000)

它提供了一个以秒为单位的参考时间,可用于以后比较以测量经过的时间。

对于Python 3.7+, time.time_ns()给出自epoch以来以纳秒为单位经过的时间。

这给出了以毫秒为单位的整数时间:

import time

ms = time.time_ns() // 1_000_000

Time.time()可能只给出秒的分辨率,毫秒的首选方法是datetime。

from datetime import datetime
dt = datetime.now()
dt.microsecond

在Python 3.8+中进行了一些测试后,我注意到这些选项给出了完全相同的结果,至少在Windows 10中是这样。

import time

# Option 1
unix_time_ms_1 = int(time.time_ns() / 1000000)
# Option 2
unix_time_ms_2 = int(time.time() * 1000)

请随意使用你更喜欢的一个,我不认为有任何需要比这个更复杂的解决方案。