以比Python中的秒数更好的分辨率获取当前UTC posix时间戳

问题描述 投票:0回答:1

动机:

我正在尝试以比秒更好的分辨率获得 UTC posix 时间戳(毫秒是可以接受的,但微秒会更好)。我需要它作为不相关的外部计数器/定时器硬件的同步,该硬件在上电时从 0 开始以纳秒运行。

这意味着我想要一些“绝对”时间来拥有一对 (

my_absolute_utc_timestamp, some_counter_ns
) 以便能够解释后续的计数器/计时器值。

我需要至少毫秒精度。

我尝试过什么:

  1. time.time_ns()

    • 我以为就这样了,但现在是当地时间。
  2. time.mktime(time.gmtime())

    • 出于某种奇怪的原因,这比 UTC 时间多了一小时:
      >>> time.mktime(time.gmtime()) - datetime.datetime.utcnow().timestamp()
      3599.555135011673
      
    • 而且只有秒精度
  3. 我最终将

    int(datetime.datetime.utcnow() * 1000000)
    设置为“utc_microseconds”,它可以工作,但是:

    • 浮动精度可能有问题
    • 看起来太复杂了,我只是不喜欢它

问题:

有没有更好的方法在Python中获取微秒或毫秒UTC posix时间戳? (最好使用标准Python库)

我正在使用 python 3.10(并且无法升级)

python time utc
1个回答
0
投票

我希望这能在 3.10 中工作,尽管我无法检查

import datetime

dt_now = datetime.datetime.now(datetime.timezone.utc)
print(dt_now.strftime("%Y-%m-%d %H:%M:%S.%f"))

输出:

2024-04-30 11:17:48.246701
© www.soinside.com 2019 - 2024. All rights reserved.