How calendar identity, time zones, and recurrence work

Understand the model behind duplicates, shifted times, and recurrence exceptions.

Updated · Applies to: ICS Viewer
On this page
IdentityTimeRecurrence and exceptionsReferences
UTC, TZID, floating time, and the recurrence expansion pipeline

Identity

UID identifies one calendar object across exports. A revision normally keeps the same UID and advances revision metadata such as SEQUENCE. Changing a UID can turn an update into a second event.

Time

ICS supports three important forms:

  • 20261103T140000Z: an absolute UTC instant.
  • TZID=America/New_York:20261103T090000: local wall time interpreted with named zone rules.
  • 20261103T090000: floating time, shown as 09:00 in the viewer's local context.

Do not append Z or invent a TZID just to silence a warning. That changes meaning. Windows and IANA zone names are not interchangeable without an explicit mapping.

Recurrence and exceptions

RRULE generates occurrences; RDATE adds; EXDATE removes. A modified single occurrence uses the series UID plus RECURRENCE-ID, which points to the original occurrence identity even when the meeting moves.

Before repairing, verify the series start, rule, exclusions, exceptions, and intended end. Test dates on both sides of a daylight-saving transition.

References