什么是C#的system.datetime.Ticks()的python等价物?

egg*_*ert 7 c# python

我想得到python等价的timestamp.Ticks(),但是我需要它来自python日期时间,而不是时间对象.

这不等同于Python中Get timer ticks,它询问"我如何得到午夜以来的滴答数?".

我问我如何得到给定日期时间的刻度数.按刻度我的意思是system.datetime.ticks:

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

通过'得到等价'我的意思是'什么是将给出C#代码的等效输出的python代码?'.

mha*_*wke 12

根据引用的页面,DateTime.Ticks返回自之后的刻度数0001:01:01 00:00:00.每秒有1000万个刻度.

在Python中,datetime(1, 1, 1)代表0001-01-01 00:00:00.您可以使用a的total_seconds()方法计算秒数timedelta.然后,给定一个datetime对象,计算delta并将其转换为这样的刻度:

from datetime import datetime

t0 = datetime(1, 1, 1)
now = datetime.utcnow()
seconds = (now - t0).total_seconds()
ticks = seconds * 10**7
Run Code Online (Sandbox Code Playgroud)

作为一个功能,这是:

def ticks(dt):
    return (dt - datetime(1, 1, 1)).total_seconds() * 10000000

>>> t = ticks(datetime.utcnow())
>>> t
6.356340009927151e+17
>>> long(t)
635634000992715136L
Run Code Online (Sandbox Code Playgroud)

该值优于C#使用的返回值DateTime.UtcNow.Ticks.

笔记:

  • 假定UTC时间.
  • 所述的分辨率datetime对象由下式给出 datetime.resolution,这是datetime.timedelta(0, 0, 1)或微秒的分辨率(1E-06秒).C#Ticks据称是1e-07秒.