Rozumiem, że sekundy i mikrosekund prawdopodobnie reprezentowane oddzielnie datetime.timedelta
ze względów efektywności, ale ja po prostu napisał tę prostą funkcję:Brakujące datetime.timedelta.to_seconds() -> unosić w Pythonie?
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
ta jest przydatna dla rzeczy jak przepuszczenie wartość time.sleep
lub select.select
. Dlaczego coś takiego nie jest częścią interfejsu datetime.timedelta
? Może brakuje mi jakiegoś rogu. Reprezentacja czasu wydaje się mieć wiele nieoczywistych przypadków narożnych ...
Odrzuciłem kilka dni, aby uzyskać rozsądny strzał z pewną precyzją (jestem zbyt leniwy, aby opracować matematyczne bankomaty ATM, więc wydaje się, że rozsądny kompromis ;-).
Na czym polega pytanie? –
Ośmielasz się - zastanawiasz się, czy jest jakiś powód, dla którego nie ma go w interfejsie. – cdleary
To wygląda na duplikat https://stackoverflow.com/questions/21414639/convert-timedelta-to-floating-point, który ma lepszą odpowiedź. – outofculture