Python中与C#的system.datetime.Ticks()等效的是什么?

13
我想获取Python中与timestamp.Ticks()等效的函数,但我需要它来自Python datetime而不是time对象。
这不是Get timer ticks in Python的等效版本,该问题是“如何获取从午夜以来的滴答数?”。
我想知道如何获取给定datetime的滴答数。通过滴答数,我指的是system.datetime.ticks:

https://msdn.microsoft.com/en-us/library/system.datetime.ticks%28v=vs.110%29.aspx

“get equivalent of” 的意思是“什么是 Python 代码,可以给出与 C# 代码相同的输出?”

1
可能是在Python中获取计时器滴答声的重复问题。 - Sayse
timestamp.Ticks()是什么? - Sriram Sakthivel
你为什么认为需要完全对应的东西呢?编程语言有不同的风格和不同的目的。它们不必包含相应的方法、函数、数据结构等。 - Soner Gönül
抱歉,我指的是什么Python代码可以给出与C#代码等价的值。 - eggbert
2
问题非常明确定义和清晰 - 不应该被关闭。 - Gena Kukartsev
1个回答

20
根据参考页面,DateTime.Ticks 返回自 0001:01:01 00:00:00 以来的滴答数。每秒有1000万个滴答。
在Python中,datetime(1, 1, 1) 表示 0001-01-01 00:00:00。您可以使用timedeltatotal_seconds()方法计算秒数。然后,给定一个datetime对象,可以通过以下方式计算差值并转换为滴答数:
from datetime import datetime

t0 = datetime(1, 1, 1)
now = datetime.utcnow()
seconds = (now - t0).total_seconds()
ticks = seconds * 10**7

作为一个函数,它是这样的:
def ticks(dt):
    return (dt - datetime(1, 1, 1)).total_seconds() * 10000000

>>> t = ticks(datetime.utcnow())
>>> t
6.356340009927151e+17
>>> long(t)
635634000992715136L

这个值与使用 DateTime.UtcNow.Ticks 在 C# 中返回的值相比较,表现得很好。

注:

  • 假定为UTC时间。
  • datetime对象的分辨率由datetime.resolution给出,它是datetime.timedelta(0, 0, 1)或微秒分辨率(1e-06秒)。据说C# Ticks是1e-07秒。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接