aboutsummaryrefslogtreecommitdiff
path: root/dateutil/relativedelta.py
diff options
context:
space:
mode:
authorAlec Reiter <areiter@kabbage.com>2016-07-24 15:36:44 -0400
committerAlec Reiter <areiter@kabbage.com>2016-07-24 15:36:44 -0400
commit8a416afd6b63e66366b031a10f3173833be82c72 (patch)
treed0fd36103306199a64f8f77ff85f77f3e7ce71f1 /dateutil/relativedelta.py
parent36e6cfa7beb068c99335a221283206c6358476a5 (diff)
downloaddateutil-8a416afd6b63e66366b031a10f3173833be82c72.tar.gz
Allow datetime.timedelta to be added to relativedelta
Diffstat (limited to 'dateutil/relativedelta.py')
-rw-r--r--dateutil/relativedelta.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/dateutil/relativedelta.py b/dateutil/relativedelta.py
index ea88553..f339f9e 100644
--- a/dateutil/relativedelta.py
+++ b/dateutil/relativedelta.py
@@ -69,7 +69,7 @@ class relativedelta(object):
Relative information, may be negative (argument is plural); adding
or subtracting a relativedelta with relative information performs
the corresponding aritmetic operation on the original datetime value
- with the information in the relativedelta.
+ with the information in the relativedelta.
weekday:
One of the weekday instances (MO, TU, etc). These instances may
@@ -299,16 +299,16 @@ class relativedelta(object):
>>> relativedelta(days=1.5, hours=2).normalized()
relativedelta(days=1, hours=14)
-
+
:return:
Returns a :class:`dateutil.relativedelta.relativedelta` object.
"""
# Cascade remainders down (rounding each to roughly nearest microsecond)
days = int(self.days)
-
+
hours_f = round(self.hours + 24 * (self.days - days), 11)
hours = int(hours_f)
-
+
minutes_f = round(self.minutes + 60 * (hours_f - hours), 10)
minutes = int(minutes_f)
@@ -347,6 +347,23 @@ class relativedelta(object):
second=other.second or self.second,
microsecond=(other.microsecond or
self.microsecond))
+ if isinstance(other, datetime.timedelta):
+ return self.__class__(years=self.years,
+ months=self.months,
+ days=self.days + other.days,
+ hours=self.hours,
+ minutes=self.minutes,
+ seconds=self.seconds + other.seconds,
+ microseconds=self.microseconds + other.microseconds,
+ leapdays=self.leapdays,
+ year=self.year,
+ month=self.month,
+ day=self.day,
+ weekday=self.weekday,
+ hour=self.hour,
+ minute=self.minute,
+ second=self.second,
+ microsecond=self.microsecond)
if not isinstance(other, datetime.date):
return NotImplemented
elif self._has_time and not isinstance(other, datetime.datetime):