Skip to content

fix(filter): read the zone of a date and time value only after the fraction - #165

Merged
pdevito3 merged 1 commit into
mainfrom
fm/qk-breaking-zone-after-fraction
Oct 9, 2026
Merged

pdevito3 merged 1 commit into
mainfrom
fm/qk-breaking-zone-after-fraction

Conversation

@pdevito3

@pdevito3 pdevito3 commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

For later consideration in a major version. Do not merge now. This PR is one of two PRs that replace #144. Each PR has one breaking change. The captain decides on each PR separately.

#134 restored the v1.14.2 rule (restore commit b49ad2b). This PR re-applies this part of 5c84ef6.

What breaks

An unquoted date and time value with the zone before the fraction throws ParsingException. On v1.14.2 and main, the value parses.

Example

Input v1.14.2 and main This PR
SpecificDateTime == 2024-01-15T08:00:00Z.5 parses ParsingException
SpecificDate == 2024-01-15T10:00:00+02:00.500 parses ParsingException
SpecificDateTime == 2024-01-15T08:00:00.5Z parses parses (no change)

Justification

A zone before the fraction is not an ISO 8601 format. The README shows only ISO 8601 values. The date parser now reads the date, the time, the fraction, and then the zone.

Migration

Write the zone after the fraction: 2024-01-15T08:00:00.5Z.

README

The date and time format list says that the zone comes after the fraction. It also says that an unquoted value with the zone before the fraction throws a ParsingException.

Tests

  • New unit test: zone_before_the_fraction_throws (2 cases).
  • The v1.14.2 cases Z.5 and +02:00.500 are removed from the date tests.
  • dotnet test on this branch: 470 unit tests and 296 Postgres integration tests (Testcontainers) pass, 0 failures.

…action

The date parser accepted the zone before the fraction, which is not an ISO 8601 format. The parser now reads the date, the time, the fraction, and then the zone.

Behavior change: an unquoted date and time value with the zone before the fraction throws ParsingException. Write the zone after the fraction.

Examples:
  SpecificDateTime == 2024-01-15T08:00:00Z.5
    before: parses
    after:  ParsingException
  SpecificDate == 2024-01-15T10:00:00+02:00.500
    before: parses
    after:  ParsingException
  SpecificDateTime == 2024-01-15T08:00:00.5Z
    before and after: parses
@pdevito3
pdevito3 force-pushed the fm/qk-breaking-zone-after-fraction branch from 4d9a1b7 to 7c20557 Compare October 9, 2026 20:49
@pdevito3 pdevito3 changed the title fix(filter)!: read the zone of a date and time value only after the fraction fix(filter): read the zone of a date and time value only after the fraction Oct 9, 2026
@pdevito3
pdevito3 merged commit 4804a13 into main Oct 9, 2026
2 checks passed
@pdevito3
pdevito3 deleted the fm/qk-breaking-zone-after-fraction branch October 9, 2026 20:50
pdevito3 added a commit that referenced this pull request Oct 9, 2026
…action (#165)

The date parser accepted the zone before the fraction, which is not an ISO 8601 format. The parser now reads the date, the time, the fraction, and then the zone.

Behavior change: an unquoted date and time value with the zone before the fraction throws ParsingException. Write the zone after the fraction.

Examples:
  SpecificDateTime == 2024-01-15T08:00:00Z.5
    before: parses
    after:  ParsingException
  SpecificDate == 2024-01-15T10:00:00+02:00.500
    before: parses
    after:  ParsingException
  SpecificDateTime == 2024-01-15T08:00:00.5Z
    before and after: parses
pdevito3 added a commit that referenced this pull request Oct 9, 2026
Brings the fixes that landed on main (#175 to #198, #142, #118, #151, #165, #127) into v2. The v2 code already has each of these fixes, so each conflict keeps the v2 side.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant