diff --git a/deepdiff/helper.py b/deepdiff/helper.py index e0be6a19..c2bdd3a0 100644 --- a/deepdiff/helper.py +++ b/deepdiff/helper.py @@ -623,10 +623,10 @@ def datetime_normalize(truncate_datetime, obj): obj = obj.replace(minute=0, second=0, microsecond=0) elif truncate_datetime == 'day': obj = obj.replace(hour=0, minute=0, second=0, microsecond=0) - if isinstance(obj, datetime.datetime): - obj = obj.replace(tzinfo=datetime.timezone.utc) - elif isinstance(obj, datetime.time): - obj = time_to_seconds(obj) + if isinstance(obj, datetime.datetime): + obj = obj.replace(tzinfo=datetime.timezone.utc) + elif isinstance(obj, datetime.time): + obj = time_to_seconds(obj) return obj diff --git a/tests/test_diff_datetime.py b/tests/test_diff_datetime.py index 54555e6a..da257fa9 100644 --- a/tests/test_diff_datetime.py +++ b/tests/test_diff_datetime.py @@ -1,8 +1,31 @@ -from datetime import date, datetime, time +from datetime import date, datetime, time, timezone from deepdiff import DeepDiff class TestDiffDatetime: + def test_datetime_within_array_with_timezone_diff(self): + """Testing for the correct setting and usage of epsilon.""" + d1 = [datetime(2020, 8, 31, 13, 14, 1)] + d2 = [datetime(2020, 8, 31, 13, 14, 1, tzinfo=timezone.utc)] + + res = DeepDiff(d1, d2) + expected = { + "values_changed": { + "root[0]": { + "new_value": datetime(2020, 8, 31, 13, 14, 1, tzinfo=timezone.utc), + "old_value": datetime(2020, 8, 31, 13, 14, 1), + } + } + } + assert res == expected + + res_ignore = DeepDiff(d1, d2, ignore_order=True) + assert res_ignore == expected + + res_truncate = DeepDiff(d1, d2, truncate_datetime='second') + assert res_truncate == {} + + def test_datetime_diff(self): """Testing for the correct setting and usage of epsilon.""" d1 = {"a": datetime(2023, 7, 5, 10, 11, 12)}