Page MenuHomePhabricator

Parse ICS datetimes and durations
ClosedPublic

Authored by epriestley on Sep 13 2016, 7:50 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Apr 11, 7:56 AM
Unknown Object (File)
Mon, Apr 8, 6:04 PM
Unknown Object (File)
Sat, Mar 30, 1:26 PM
Unknown Object (File)
Mar 15 2024, 4:24 AM
Unknown Object (File)
Feb 14 2024, 8:10 AM
Unknown Object (File)
Feb 3 2024, 11:56 AM
Unknown Object (File)
Jan 24 2024, 1:34 PM
Unknown Object (File)
Jan 24 2024, 1:34 PM
Subscribers
None

Details

Summary

Ref T10747. This parses "SUMMARY" and "DESCRIPTION" from ICS (easy) and "DTSTART", "DTEND" and "DURATION" (big mess, as one might reasonably expect).

ICS dates can be absolute (e.g., at a specific time in history) or "floating". If an event is "floating", it has a date like "June 23 at 5PM", which is expected to be interpreted according to the viewer timezone, i.e. occur at different times in different timezones.

Dates can also be "start + end" or "start + duration". Worse, they can be a floating start plus a duration. Do a bunch of gymnastics to represent all this stuff faithfully.

This probably still doesn't handle all-day events properly, but I'll deal with them in the future.

Test Plan

Added unit tests; ran unit tests.

Diff Detail

Repository
rPHU libphutil
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Parse ICS datetimes and durations.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.
This revision is now accepted and ready to land.Sep 13 2016, 8:21 PM
This revision was automatically updated to reflect the committed changes.