매우 흥미 롭습니다 - 나는 또한 그렇게 일할 것으로 기대했을 것입니다. 방금 파이썬 2.x에서 수행하는 몇 가지 예제/doctest를 사용하여 함수를 작성했습니다. 또한 ActiveState recipe으로 게시 :
import datetime
def divide_timedelta(td, divisor):
"""Python 2.x timedelta doesn't support division by float, this function does.
>>> td = datetime.timedelta(10, 100, 1000)
>>> divide_timedelta(td, 2) == td/2
True
>>> divide_timedelta(td, 100) == td/100
True
>>> divide_timedelta(td, 0.5)
datetime.timedelta(20, 200, 2000)
>>> divide_timedelta(td, 0.3)
datetime.timedelta(33, 29133, 336667)
>>> divide_timedelta(td, 2.5)
datetime.timedelta(4, 40, 400)
>>> td/0.5
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for /: 'datetime.timedelta' and 'float'
"""
# timedelta.total_seconds() is new in Python version 2.7, so don't use it
total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 1e6)/1e6
divided_seconds = total_seconds/float(divisor)
return datetime.timedelta(seconds=divided_seconds)
if __name__ == '__main__':
import doctest
doctest.testmod()
FWIW는 Py3K에서 잘 작동합니다. – geoffspear
@ 우비 - 네 말이 맞아. 나는 그걸 시도하지 않았다 ... – mgilson