diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2018-06-20 18:56:00 +0200 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2018-06-20 18:56:00 +0200 |
commit | af9e41a3293f4cf8bb7ec8b3ec9298fac735d967 (patch) | |
tree | f823c3c20a6ce6a9ee5e181f82d447b581d34714 | |
parent | f059c4c04c1aeb66be5b3ab9a309b9fd82bb3925 (diff) | |
download | croniter-af9e41a3293f4cf8bb7ec8b3ec9298fac735d967.tar.gz |
(fix#107): microsecond threshold
-rw-r--r-- | docs/CHANGES.rst | 4 | ||||
-rw-r--r-- | src/croniter/croniter.py | 3 | ||||
-rwxr-xr-x | src/croniter/tests/test_croniter.py | 20 |
3 files changed, 25 insertions, 2 deletions
diff --git a/docs/CHANGES.rst b/docs/CHANGES.rst index 186f123..5e47eb7 100644 --- a/docs/CHANGES.rst +++ b/docs/CHANGES.rst @@ -3,8 +3,8 @@ Changelog 0.3.24 (unreleased) ------------------- - -- Nothing changed yet. +unreleased +- fix `#107 <https://github.com/taichino/croniter/issues/107>`_: microsecond threshold 0.3.23 (2018-05-23) diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py index 6c8331b..3398227 100644 --- a/src/croniter/croniter.py +++ b/src/croniter/croniter.py @@ -80,6 +80,9 @@ class croniter(object): self.tzinfo = None if isinstance(start_time, datetime.datetime): self.tzinfo = start_time.tzinfo + # milliseconds/microseconds rounds + if start_time.microsecond: + start_time = start_time + relativedelta(seconds=1) start_time = self._datetime_to_timestamp(start_time) self.start_time = start_time diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py index b7bf57a..2d23525 100755 --- a/src/croniter/tests/test_croniter.py +++ b/src/croniter/tests/test_croniter.py @@ -812,6 +812,26 @@ class CroniterTest(base.TestCase): self.assertTrue(next_b > next_a) + def test_milliseconds(self): + """ + https://github.com/taichino/croniter/issues/107 + """ + # + dt = datetime(2018, 1, 2, 10, 0, 0, 500) + c = croniter("0 10 * * * ", start_time=dt) + ts = "{0}".format(datetime.utcfromtimestamp(c.get_prev())) + self.assertEqual(ts, '2018-01-02 10:00:00') + # + dt = datetime(2018, 1, 2, 10, 0, 1, 0) + c = croniter("0 10 * * * ", start_time=dt) + ts = "{0}".format(datetime.utcfromtimestamp(c.get_prev())) + self.assertEqual(ts, '2018-01-02 10:00:00') + # + dt = datetime(2018, 1, 2, 9, 59, 59, 999999) + c = croniter("0 10 * * * ", start_time=dt) + ts = "{0}".format(datetime.utcfromtimestamp(c.get_prev())) + self.assertEqual(ts, '2018-01-01 10:00:00') + if __name__ == '__main__': unittest.main() |