diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py index c4c4e121b68dec51921e964c4927288a8b1bf2a5..c6926e42f178f89a6bcfbec5d5902373a0787d45 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