Time Zones

To support a universal standard, Calendar Server uses the date and time strings
in Greenwich Mean Time (GMT) or Coordinated Universal Time (UTC), called Zulu time.
The server stores and returns all date and time strings from the database in Zulu
time. WCAP converts the Zulu times to the appropriate time zone settings depending
upon the value of the tzid and tzidout parameters.

The tzid parameter is used for date and time strings passed
in with the dtstart, dtend, and rid parameters, which are not already in Zulu time. WCAP uses the value of
the tzid parameter to calculate the Zulu time. If the tzid parameter is not passed in, the server’s default time zone is
used to calculate Zulu time.

For commands that return events and todos, the data is returned in Zulu time,
unless the tzidout parameter is passed in. In this case the Zulu
time is translated into the time zone specified in the tzidout parameter.

For example, if the fetch_components_by range command specifies
a date range of 20020506T100000 to 20020507T100000,
with a tzid=America/Los_Angeles, WCAP translates that to Zulu time
for database lookup. If the tzidout parameter was also passed in
(for our example, tzidout=America/New_York), then the resulting
output would be translated to that time zone and returned. If the tzidout parameter is missing, the component data is returned in Zulu time.

The tzidout parameter can be used with the storeevents and storetodos command when the fetch parameter
is set to 1 (fetch=1).

The time zones information is kept in a plain text file (timezones.ics) in VTIMEZONE format.

The server never uses the system time zone information to calculate the current
date and time. It uses the time elapsed in seconds since the Epoch (00:00:00 UTC,
January 1, 1970) to calculate current date and time. Then depending on the user’s
time zone settings, the date is displayed to reflect the correct time zone.