diff --git a/pycounter/helpers.py b/pycounter/helpers.py index cea04a2..fbb4f53 100644 --- a/pycounter/helpers.py +++ b/pycounter/helpers.py @@ -3,6 +3,7 @@ import datetime import re +import pendulum import six @@ -49,14 +50,7 @@ def convert_date_run(datestring): if isinstance(datestring, datetime.date): return datestring - try: - return datetime.datetime.strptime(datestring, "%Y-%m-%d").date() - except ValueError: - try: - return datetime.datetime.strptime(datestring, "%m/%d/%Y").date() - except ValueError: - # ISO 8601 without timezone - return datetime.datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S").date() + return pendulum.parse(datestring, strict=False).date() def convert_date_column(datestring): diff --git a/pycounter/test/test_helpers.py b/pycounter/test/test_helpers.py index 9221911..e6457da 100644 --- a/pycounter/test/test_helpers.py +++ b/pycounter/test/test_helpers.py @@ -6,7 +6,13 @@ import pytest -from pycounter.helpers import convert_covered, is_first_last, next_month, prev_month +from pycounter.helpers import ( + convert_covered, + convert_date_run, + is_first_last, + next_month, + prev_month, +) @pytest.mark.parametrize( @@ -58,3 +64,12 @@ def test_is_first_last(period, expected): def test_convert_covered(covered_line, expected): expected_dates = tuple(datetime.date(*val) for val in expected) assert convert_covered(covered_line) == expected_dates + + +@pytest.mark.parametrize( + "date_run, expected", + [("2017-01-01", (2017, 1, 1)), ("2020-01-24T14:04:36Z", (2020, 1, 24))], +) +def test_convert_date_run(date_run, expected): + expected_date = datetime.date(*expected) + assert convert_date_run(date_run) == expected_date diff --git a/pycounter/version.py b/pycounter/version.py index 4e31341..aa59f5f 100644 --- a/pycounter/version.py +++ b/pycounter/version.py @@ -1,2 +1,2 @@ """version information.""" -__version__ = "2.1.1" +__version__ = "2.1.2"