Skip to content

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

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

feat: preserve UTC 'Z' indicator in Period JSON serialization#765
bastien-roucaries wants to merge 2 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 phil-davis left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add/edit unit test cases do demonstrate what is expected, and that it works.
Thanks

Comment thread lib/Property/ICalendar/Period.php Outdated
if ('P' === $end[0]) {
$return[] = [
$start->format('Y-m-d\\TH:i:s'),
$start->format('Y-m-d\\TH:i:s').$zSuffix,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case the "date"-time string is a duration, so a timezone indication is not relevant.
Something like "1970-01-02:14:30:00" just indicates a duration of 1 day, 14 hours, 30 miutes and 0 seconds.
Or am I not understanding?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@phil-davis for end, not for start that should use timezone

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