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)
Tue, Nov 19, 4:27 AM
Unknown Object (File)
Tue, Nov 19, 4:26 AM
Unknown Object (File)
Tue, Nov 19, 4:26 AM
Unknown Object (File)
Tue, Nov 19, 4:09 AM
Unknown Object (File)
Mon, Nov 18, 1:59 AM
Unknown Object (File)
Mon, Nov 18, 1:14 AM
Unknown Object (File)
Sun, Nov 17, 3:29 PM
Unknown Object (File)
Wed, Nov 13, 4:42 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.