{"record":{"id":"6253d937262b74ba","repo":"makeplane/plane","slug":"invalid-date-format-value","errorCode":null,"errorMessage":"Invalid date format: {value}","messagePattern":"Invalid date format: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"apps/api/plane/utils/filters/converters.py","lineNumber":280,"sourceCode":"                if len(parts) > 0 and self.DATE_PATTERN.match(parts[0]):\n                    # Skip relative date patterns entirely\n                    return {}\n\n        # Skip complex conditions (more than 2 values)\n        if len(values) > 2:\n            return {}\n\n        # Process each date value\n        exact_dates = []\n        after_dates = []\n        before_dates = []\n\n        for value in values:\n            if \";\" not in value:\n                # Simple date string\n                if not self._validate_date(value):\n                    if strict:\n                        raise ValueError(f\"Invalid date format: {value}\")\n                    continue\n                exact_dates.append(value)\n            else:\n                # Directional date - only handle basic after/before\n                parts = value.split(\";\")\n                if len(parts) < 2:\n                    if strict:\n                        raise ValueError(f\"Invalid date format: {value}\")\n                    continue\n\n                date_part = parts[0]\n                direction = parts[1]\n\n                if not self._validate_date(date_part):\n                    if strict:\n                        raise ValueError(f\"Invalid date format: {date_part}\")\n                    continue\n","sourceCodeStart":262,"sourceCodeEnd":298,"githubUrl":"https://github.com/makeplane/plane/blob/1c8a60f858d8472aa56e29994ec1c7926da2c6ce/apps/api/plane/utils/filters/converters.py#L262-L298","documentation":"ValueError raised in `_process_date_field` (converters.py:280) when `strict=True` and a simple (no ';') date value fails `_validate_date`, which uses dateutil's parser. It only fires in strict mode; non-strict skips the value. The bad value is interpolated into the message.","triggerScenarios":"Calling the legacy-to-rich filter converter with strict=True and a date filter value that dateutil cannot parse - e.g. '2024-13-99', 'not-a-date', 'tomorrow', or a locale-formatted string dateutil rejects. Single (non-directional) date values hit this branch.","commonSituations":"Migrating legacy filter payloads with strict validation enabled; client sending free-text instead of ISO dates; locale-specific formats dateutil does not accept by default; copy-paste from spreadsheets with invisible characters.","solutions":["Send dates in ISO 8601 (YYYY-MM-DD) which dateutil reliably parses.","Disable strict mode (strict=False) to skip invalid date values instead of raising.","Pre-validate each date with dateutil.parser.parse client-side before submitting the filter.","Strip whitespace and non-printable characters from pasted date strings."],"exampleFix":"# before\nfilters = {\"target_date\": [\"not-a-date\"]}\nconverter.convert(filters, strict=True)  # raises\n\n# after\nfilters = {\"target_date\": [\"2024-08-12\"]}\nconverter.convert(filters, strict=True)","handlingStrategy":"validation","validationCode":"from dateutil.parser import parse as dateutil_parse\n\ndef is_parseable_date(value: str) -> bool:\n    # mirrors converters.py _validate_date for strings\n    try:\n        dateutil_parse(value); return True\n    except (ValueError, TypeError):\n        return False","typeGuard":null,"tryCatchPattern":"try:\n    converter.convert(filters, strict=True)\nexcept ValueError as e:\n    if 'Invalid date format' in str(e):\n        reject_bad_dates(e)","preventionTips":["Send ISO 8601 dates (YYYY-MM-DD).","Use strict=False to tolerate and skip bad dates during migrations.","Pre-parse each date with dateutil before submitting."],"tags":["filters","validation","date","value-error"],"backgroundTag":null,"analyzedSha":"1c8a60f858d8472aa56e29994ec1c7926da2c6ce","analyzedAt":"2026-08-12T14:44:31.636Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}