diff --git a/rust/src/parsing.rs b/rust/src/parsing.rs index 9cae0709..374fe3cf 100644 --- a/rust/src/parsing.rs +++ b/rust/src/parsing.rs @@ -891,7 +891,7 @@ impl<'a> Parser<'a> { } for i in 1..14 { - if ord < MONTHS_OFFSETS[leap][i] { + if ord <= MONTHS_OFFSETS[leap][i] { let day = ord as u32 - MONTHS_OFFSETS[leap][i - 1] as u32; let month = (i - 1) as u32; diff --git a/tests/parsing/test_parsing.py b/tests/parsing/test_parsing.py index ce530c34..0fa0e936 100644 --- a/tests/parsing/test_parsing.py +++ b/tests/parsing/test_parsing.py @@ -381,6 +381,19 @@ def test_iso8601_week_number(): assert parsed.microsecond == 0 assert parsed.tzinfo is None + # Test case for bug #916 - 2026W36 should parse correctly + text = "2026W36" + parsed = parse(text) + + assert parsed.year == 2026 + assert parsed.month == 8 + assert parsed.day == 31 + assert parsed.hour == 0 + assert parsed.minute == 0 + assert parsed.second == 0 + assert parsed.microsecond == 0 + assert parsed.tzinfo is None + def test_iso8601_week_number_with_time(): text = "2012-W05T09"