没有关于如何在日历或事件上使用颜色的 RFC 标准。
iOS 和 OSX 日历客户端仅支持单一日历颜色,它们不能为单个事件着色(与 Outlook 不同,它具有额外的“颜色类别”功能)。
您可以通过 WebDAV 设置日历的 Apple 颜色。它是(当前未记录的)Apple 特定扩展,是日历集合上的一个属性。样本:
<calendar-color xmlns="http://apple.com/ns/ical/">#2952A3</calendar-color>
使用常规 PROPPATCH 在现有日历上设置颜色(或在创建集合时在 MKCOL 中):
PROPPATCH /your/calendar/url/ HTTP/1.1
...
<propertyupdate xmlns="DAV:">
<set>
<prop>
<calendar-color xmlns="http://apple.com/ns/ical/">#2952A3</calendar-color>
</prop>
</set>
</propertyupdate>
不幸的是,无法在 CalDAV 中的其他日历中嵌入日历:“包含在日历集合中的集合不得包含任何深度的日历集合,即不允许在任何深度的其他日历集合中“嵌套”日历集合。” RFC 4791
更糟糕的是,大多数客户端甚至不允许在任意 DAV 集合层次结构中使用日历(也就是说,它们只将 calendar-home 视为一个平面列表,而不遍历非日历子集合)。
总结:没有“合理”的方式来支持每个事件的颜色,主要是因为 Apple 客户端根本没有该功能。
PS:其他 CalDAV 客户端可能具有该功能(例如 BusyCal),并通过 iCalendar X 属性或再次使用自定义 DAV 属性将颜色嵌入到事件中。