summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2015-11-19 10:26:47 +0100
committerMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2015-11-19 10:26:47 +0100
commit5460b8483928199252860d6cec723b6c426dc02e (patch)
treea1183f9cbfd4ed8324d946af23475914466679af
parentfce6ade33c7a81d59ed2b26353a6bd78e6947f59 (diff)
parentfcc7902ab438a08afe74a8eabb3f43d06cd0d647 (diff)
downloadcroniter-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.py13
-rwxr-xr-xsrc/croniter/tests/test_croniter.py2
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')