python
data_error
ai_generated
true
pydantic_core._pydantic_core.ValidationError: 1 validation error for Event when Input should be a valid datetime, invalid date separator, expected `-` [type=datetime_parsing, input_value='2024/01/15', input_type=str]
ID: python/pydantic-datetime-parsing
80%Fix Rate
87%Confidence
0Evidence
2024-07-21First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 2.x | active | — | — | — |
Root Cause
The string uses slash separators that Pydantic v2's strict ISO parser rejects. It expects ISO 8601 with dashes.
generic中文
字符串使用了斜杠分隔符,Pydantic v2 的严格 ISO 解析器拒绝该格式,它期望使用短横线的 ISO 8601 格式。
Workarounds
-
90% success
from pydantic import BaseModel, field_validator from dateutil import parser class Event(BaseModel): when: 'datetime' @field_validator('when', mode='before') @classmethod def parse(cls, v): return parser.parse(v) if isinstance(v, str) else v -
85% success
import re s = re.sub(r'/', '-', '2024/01/15') Event(when=s)
Dead Ends
Common approaches that don't work:
-
50% fail
datetime_format only applies to date fields, not datetime, and won't accept time-less strings.
-
60% fail
Loses validation; downstream code must branch on type.
-
45% fail
Every call site must remember to convert; easy to miss and inconsistent.