Validates calendar dates between 0001-01-01 and 9999-12-31. Checks month limits (1-12) and day counts according to leap year rules. Timestamps (e.g. containing 'T'), non-strings, year 0000, and impossible calendar dates like February 30 are rejected without silent normalization.
parseDate(input: unknown): DateOnly | null| Name | Type | Description |
|---|---|---|
| input* | unknown | The raw value to parse and validate. |
DateOnly | null
Returns null without throwing or silently shifting invalid calendar dates.
400 font-semibold">import { parseDate } 400 font-semibold">from 400 font-semibold">class="text-emerald-400">"daysafe";400 font-semibold">const valid = parseDate(400 font-semibold">class="text-emerald-400">"2026-11-02");console.log(valid); 400 font-semibold">class=400 font-semibold">class="text-emerald-400">"text-slate-500 italic">// 400 font-semibold">class="text-emerald-400">"2026-11-02" (DateOnly)400 font-semibold">const leap = parseDate(400 font-semibold">class="text-emerald-400">"2024-02-29");console.log(leap); 400 font-semibold">class=400 font-semibold">class="text-emerald-400">"text-slate-500 italic">// 400 font-semibold">class="text-emerald-400">"2024-02-29"400 font-semibold">const impossible = parseDate(400 font-semibold">class="text-emerald-400">"2026-02-30");console.log(impossible); 400 font-semibold">class=400 font-semibold">class="text-emerald-400">"text-slate-500 italic">// 400 font-semibold">null