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
これは、またはに値を渡す場合などに役立ちselect.select
ます。なぜインターフェースのこの部分のようなものではないのですか?datetime.timedelta
いくつかのコーナーケースが欠けている可能性があります。時間表現には、非常に多くの非自明なコーナーケースがあるようです...
私は、ある程度の精度で妥当なショットを撮るために、すぐに数日を拒否しました(私は、数学のATMを実際に計算するには怠惰なので、これは妥当な妥協案のようです;-)。