我知道datetime.timedelta
出于效率原因,秒和微秒可能分开表示,但我只是写了这个简单的函数:
def to_seconds_float(timedelta):
"""Calculate floating point representation of combined
seconds/microseconds attributes in :param:`timedelta`.
:raise ValueError: If :param:`timedelta.days` is truthy.
>>> to_seconds_float(datetime.timedelta(seconds=1, milliseconds=500))
1.5
>>> too_big = datetime.timedelta(days=1, seconds=12)
>>> to_seconds_float(too_big) # doctest: +ELLIPSIS
Traceback (most recent call last):
...
ValueError: ('Must not have days', datetime.timedelta(1, 12))
"""
if timedelta.days:
raise ValueError('Must not have days', timedelta)
return timedelta.seconds + timedelta.microseconds / 1E6
这对于将值传递给time.sleep
or等事情很有用select.select
。为什么界面的这一部分没有类似的东西?datetime.timedelta
我可能会遗漏一些角落案例。时间表示似乎有很多不明显的极端情况......
我拒绝了几天来合理地精确地拍摄(我懒得实际计算出数学 ATM,所以这似乎是一个合理的妥协;-)。