I\'d like to be able to do the following:
num_intervals = (cur_date - previous_date) / interval_length
or
print (datetime.n
Sure, just convert to a number of seconds (minutes, milliseconds, hours, take your pick of units) and do the division.
EDIT (again): so you can't assign to timedelta.__div__. Try this, then:
divtdi = datetime.timedelta.__div__
def divtd(td1, td2):
if isinstance(td2, (int, long)):
return divtdi(td1, td2)
us1 = td1.microseconds + 1000000 * (td1.seconds + 86400 * td1.days)
us2 = td2.microseconds + 1000000 * (td2.seconds + 86400 * td2.days)
return us1 / us2 # this does integer division, use float(us1) / us2 for fp division
And to incorporate this into nadia's suggestion:
class MyTimeDelta:
__div__ = divtd
Example usage:
>>> divtd(datetime.timedelta(hours = 12), datetime.timedelta(hours = 2))
6
>>> divtd(datetime.timedelta(hours = 12), 2)
datetime.timedelta(0, 21600)
>>> MyTimeDelta(hours = 12) / MyTimeDelta(hours = 2)
6
etc. Of course you could even name (or alias) your custom class timedelta so it gets used in place of the real timedelta, at least in your code.
You can override the division operator like this:
class MyTimeDelta(timedelta):
def __div__(self, value):
# Dome something about the object
Division and multiplication by integers seems to work out of the box:
>>> from datetime import timedelta
>>> timedelta(hours=6)
datetime.timedelta(0, 21600)
>>> timedelta(hours=6) / 2
datetime.timedelta(0, 10800)