Skip to content

feat: preserve UTC 'Z' indicator in Period JSON serialization#765

Open
bastien-roucaries wants to merge 9 commits into
sabre-io:masterfrom
bastien-roucaries:411
Open

feat: preserve UTC 'Z' indicator in Period JSON serialization#765
bastien-roucaries wants to merge 9 commits into
sabre-io:masterfrom
bastien-roucaries:411

Conversation

@bastien-roucaries

Copy link
Copy Markdown

When serializing PERIOD values to JSON (for jCal format), preserve the 'Z' timezone indicator for UTC datetimes. This ensures FREEBUSY periods maintain explicit UTC designation, avoiding timezone ambiguity.

Without this change:
FREEBUSY:20120226T230000Z/20120226T230000Z
=> serializes to: ["2012-02-26T23:00:00", "2012-02-26T23:00:00"]

With this change:
FREEBUSY:20120226T230000Z/20120226T230000Z
=> serializes to: ["2012-02-26T23:00:00Z", "2012-02-26T23:00:00Z"]

This behavior is consistent with RFC 5545 which requires UTC times to be designated with the 'Z' suffix.

Related: #411

phil-davis

This comment was marked as resolved.

@codecov

codecov Bot commented Jun 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.66%. Comparing base (6afc39c) to head (d638952).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##             master     #765   +/-   ##
=========================================
  Coverage     98.66%   98.66%           
- Complexity     1757     1759    +2     
=========================================
  Files            71       71           
  Lines          5163     5165    +2     
=========================================
+ Hits           5094     5096    +2     
  Misses           69       69           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@phil-davis

phil-davis commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

@staabm @Chris53897 @bastien-roucaries I adjusted the code to append the "Z" when the input ends with "Z" (rather than just contains "Z"). I think that the only valid place that "Z" can be is at the end of a date-time string.

I added some test cases to DateTime testValidate to check that things like 20260627T100000Z+0200 are already being seen as invalid.

Please review and give your opinion.

@bastien-roucaries

Copy link
Copy Markdown
Author

@phil-davis I think iut is safe

guimard and others added 8 commits June 28, 2026 23:51
When serializing PERIOD values to JSON (for jCal format), preserve the 'Z'
timezone indicator for UTC datetimes. This ensures FREEBUSY periods maintain
explicit UTC designation, avoiding timezone ambiguity.

Without this change:
  FREEBUSY:20120226T230000Z/20120226T230000Z
  => serializes to: ["2012-02-26T23:00:00", "2012-02-26T23:00:00"]

With this change:
  FREEBUSY:20120226T230000Z/20120226T230000Z
  => serializes to: ["2012-02-26T23:00:00Z", "2012-02-26T23:00:00Z"]

This behavior is consistent with RFC 5545 which requires UTC times to be
designated with the 'Z' suffix.

Related: sabre-io#411
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.

4 participants