From 77d8cb4ded97b208bde9c74a9305362dd9f405b3 Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Tue, 25 Aug 2020 14:03:40 +0200 Subject: [PATCH] FIX: Compare datetime treats timezones and milliseconds --- src/caosadvancedtools/cfood.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py index c4c4e121..c6926e42 100644 --- a/src/caosadvancedtools/cfood.py +++ b/src/caosadvancedtools/cfood.py @@ -594,7 +594,31 @@ def assure_has_property(entity, name, value, to_be_updated=None, if isinstance(value, datetime): - if datetime.fromisoformat(el.value) == value: + try: + compare_time = datetime.fromisoformat(el.value) + except ValueError: + # special case of wrong iso format + # time zone + tmp = el.value.split("+") + if len(tmp) == 2: + tz_str = '+' + tmp[1][:2] + ':' + tmp[1][2:] + else: + tz_str = "" + tmp = tmp[0] + # milli- and micrseconds + tmp = tmp.split(".") + if len(tmp) == 2: + if len(tmp[1]) < 6: + ms = '.' + tmp[1] + '0'*(6-len(tmp[1])) + else: + raise ValueError( + "invalid millisecond format in {}".format(el.value)) + else: + ms = "" + tmp = tmp[0] + ms + tz_str + compare_time = datetime.fromisoformat(tmp) + + if compare_time == value: contained = True break -- GitLab