feat(dates): read ordinal ranges with a stated UTC offset
Adds parseOrdinalDateTimeRange for "November 9th, 05:00 - December 4th, 2023, 04:59 (UTC-5)". Ordinal days anchor the pattern at both ends so it cannot claim text the looser readers should get, and the year rolls back across New Year as parseMonthDayRange does. The offset is required rather than defaulted. parseSlashDateTimeRange has to read its wall-clock times as UTC because its source states no zone; here the zone is part of the format, so a cell without one returns null instead of being silently read five hours early. Calendar validation runs on the stated local fields, before the shift, or "February 30th, 23:00 (UTC-5)" would convert into a real instant in March. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
9d24116c12
commit
7926a70850
@@ -80,6 +80,7 @@ All live in `src/ingest/dates.ts`, each returning null rather than inferring any
|
||||
| `parseLabelledStartEnd` | `Start: January 24, 2025 End: Permanent` | Infinity Nikki |
|
||||
| `parseAdjacentFullRange` | `July 30, 2026 August 13, 2026` (halves split by an `<hr>`) | Persona 5: The Phantom X |
|
||||
| `parseYearFirstSlashRange` | `2026/07/30 – 2026/08/20` (year first, so field order is not inferred) | Arknights |
|
||||
| `parseOrdinalDateTimeRange` | `November 9th, 05:00 - December 4th, 2023, 04:59 (UTC-5)` (ordinal days, stated offset) | Reverse: 1999 |
|
||||
| `parseOpenRange` | `Jul. 24, 2026 - End of 4.6`, `July 10, 2026 - Permanent` | Star Rail, Wuthering Waves |
|
||||
|
||||
`parseOpenRange` is tried last because it is the most permissive — it accepts any leading full date
|
||||
|
||||
Reference in New Issue
Block a user