Python的几分之一秒

Tim*_*man 19 python datetime

在Python中处理部分秒的最佳方法是什么?日期时间库非常好,但据我所知,它不能处理任何不到一秒钟的单位.

Don*_*ell 32

在datetime模块中,datetime,time和timedelta类都具有最小的微秒分辨率:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2009, 12, 4, 23, 3, 27, 343000)
>>> now.microsecond
343000
Run Code Online (Sandbox Code Playgroud)

如果要显示带小数秒的日期时间,只需插入小数点并删除尾随零:

>>> now.strftime("%Y-%m-%d %H:%M:%S.%f").rstrip('0')
'2009-12-04 23:03:27.343'
Run Code Online (Sandbox Code Playgroud)

datetime和time类只接受整数输入,小时,分钟和秒必须介于0到59之间,微秒必须介于0到999999之间.但是,timedelta类将接受带有分数的浮点值并执行所有正确的模运算为了你:

>>> span = timedelta(seconds=3662.567)
>>> span
datetime.timedelta(0, 3662, 567000)
Run Code Online (Sandbox Code Playgroud)

timedelta的基本组件是白天,秒和微秒(0,3662,567000以上),但构造函数也将接受毫秒,小时和周.所有输入可以是整数或浮点数(正数或负数).所有参数都转换为基本单位,然后归一化,使0 <=秒<60和0 <=微秒<1000000.

您可以将范围添加或减去日期时间或时间实例或另一个范围.愚弄它,你可以很容易地想出一些函数或类来做你想要的东西.您可以使用相对于某个固定日期时间的timedelta实例进行所有日期/时间处理,例如basetime = datetime(2000,1,1,0,0,0),然后转换为日期时间或时间实例以进行显示或存储.


Pab*_*ruz 6

我喜欢另一种未提及的方法:

from datetime import datetime
from time import sleep

t0 = datetime.now()
sleep(3)
t1 = datetime.now()
tdelta = t1 - t0
print(tdelta.total_seconds())
# will print something near (but not exactly 3)
# 3.0067
Run Code Online (Sandbox Code Playgroud)


Chr*_*heD 5

为了获得更好的答案,您需要进一步指定问题,但这至少应表明datetime如何处理微秒

>>> from datetime import datetime
>>> t=datetime.now()
>>> t.microsecond
519943
Run Code Online (Sandbox Code Playgroud)