From c0d478f14c6c15022b1d40e63a720792f9abc31a Mon Sep 17 00:00:00 2001 From: Peter van 't Zand Date: Wed, 15 Jul 2015 13:19:47 +0200 Subject: [PATCH] created timedelta to seconds function because python2.6-datetime doesn't support .total_seconds() --- src/croniter/croniter.py | 11 ++++++++++- src/croniter/tests/test_croniter.py | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py index 311f0c7..758df18 100644 --- a/src/croniter/croniter.py +++ b/src/croniter/croniter.py @@ -155,7 +155,7 @@ class croniter(object): if d.tzinfo is not None: d = d.replace(tzinfo=None) - d.utcoffset() - return (d - datetime.datetime(1970, 1, 1)).total_seconds() + return self._timedelta_to_seconds(d - datetime.datetime(1970, 1, 1)) def _timestamp_to_datetime(self, timestamp): """ @@ -167,6 +167,15 @@ class croniter(object): return result + def _timedelta_to_seconds(self, td): + """ + Converts a 'datetime.timedelta' object `td` into seconds contained in + the duration + """ + return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) \ + / 10**6 + + # iterator protocol, to enable direct use of croniter # objects in a loop, like "for dt in croniter('5 0 * * *'): ..." # or for combining multiple croniters into single diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py index 91ade83..aa3c114 100755 --- a/src/croniter/tests/test_croniter.py +++ b/src/croniter/tests/test_croniter.py @@ -414,7 +414,7 @@ class CroniterTest(base.TestCase): for expected_date, expected_offset in expected_schedule: d = callback() self.assertEqual(expected_date, d.replace(tzinfo=None)) - self.assertEqual(expected_offset, d.utcoffset().total_seconds()) + self.assertEqual(expected_offset, croniter._timedelta_to_seconds(d.utcoffset())) def testTimezoneWinterTime(self): tz = pytz.timezone('Europe/Athens')