Page MenuHomePhabricator

Parse ICS datetimes and durations
ClosedPublic

Authored by epriestley on Sep 13 2016, 7:50 PM.
Tags
None
Referenced Files
F13130494: D16548.diff
Wed, May 1, 9:47 AM
Unknown Object (File)
Mon, Apr 29, 3:33 PM
Unknown Object (File)
Wed, Apr 24, 11:33 PM
Unknown Object (File)
Sun, Apr 21, 11:14 PM
Unknown Object (File)
Fri, Apr 19, 5:18 PM
Unknown Object (File)
Thu, Apr 11, 7:56 AM
Unknown Object (File)
Mon, Apr 8, 6:04 PM
Unknown Object (File)
Mar 30 2024, 1:26 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.