diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2015-11-19 10:26:47 +0100 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2015-11-19 10:26:47 +0100 |
commit | 5460b8483928199252860d6cec723b6c426dc02e (patch) | |
tree | a1183f9cbfd4ed8324d946af23475914466679af | |
parent | fce6ade33c7a81d59ed2b26353a6bd78e6947f59 (diff) | |
parent | fcc7902ab438a08afe74a8eabb3f43d06cd0d647 (diff) | |
download | croniter-5460b8483928199252860d6cec723b6c426dc02e.tar.gz |
Merge pull request #45 from petervtzand/support-datetime-python-2-6
Don't use datetime functions python 2.6 doesn't support
-rw-r--r-- | src/croniter/croniter.py | 13 | ||||
-rwxr-xr-x | src/croniter/tests/test_croniter.py | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py index 311f0c7..2a237a9 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,17 @@ class croniter(object): return result + @classmethod + def _timedelta_to_seconds(cls, td): + """ + Converts a 'datetime.timedelta' object `td` into seconds contained in + the duration. + Note: We cannot use `timedelta.total_seconds()` because this is not + supported by Python 2.6. + """ + 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') |