RFC2445 - Internet Calendaring and Scheduling Core Object Sp(3)

时间:2005-02-16 来源: 作者: 点击:
"END" ":" "VCALENDAR" CRLF) The following is a simple example of an iCalendar object: BEGIN:VCALENDAR VERSION:2.0 PRODID:-//hacksw/handcal//NONSGML v1.0//EN BEGIN:VEVENT DTSTART:19970714T170000Z DTEN
  
"END" ":" "VCALENDAR" CRLF)

The following is a simple example of an iCalendar object:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

4.5 Property

A property is the definition of an individual attribute describing a
calendar or a calendar component. A property takes the form defined
by the "contentline" notation defined in section 4.1.1.

The following is an example of a property:

DTSTART:19960415T133000Z

This memo imposes no ordering of properties within an iCalendar
object.

Property names, parameter names and enumerated parameter values are
case insensitive. For example, the property name "DUE" is the same as
"due" and "Due", DTSTART;TZID=US-Eastern:19980714T120000 is the same
as DtStart;TzID=US-Eastern:19980714T120000.

4.6 Calendar Components

The body of the iCalendar object consists of a sequence of calendar
properties and one or more calendar components. The calendar
properties are attributes that apply to the calendar as a whole. The
calendar components are collections of properties that express a
particular calendar semantic. For example, the calendar component can
specify an event, a to-do, a journal entry, time zone information, or
free/busy time information, or an alarm.

The body of the iCalendar object is defined by the following
notation:

icalbody = calprops component

calprops = 2*(

; 'prodid' and 'version' are both REQUIRED,
; but MUST NOT occur more than once

prodid /version /

; 'calscale' and 'method' are optional,
; but MUST NOT occur more than once

calscale /
method /

x-prop

)

component = 1*(eventc / todoc / journalc / freebusyc /
/ timezonec / iana-comp / x-comp)

iana-comp = "BEGIN" ":" iana-token CRLF

1*contentline

"END" ":" iana-token CRLF

x-comp = "BEGIN" ":" x-name CRLF

1*contentline

"END" ":" x-name CRLF

An iCalendar object MUST include the "PRODID" and "VERSION" calendar
properties. In addition, it MUST include at least one calendar
component. Special forms of iCalendar objects are possible to publish
just busy time (i.e., only a "VFREEBUSY" calendar component) or time
zone (i.e., only a "VTIMEZONE" calendar component) information. In
addition, a complex iCalendar object is possible that is used to
capture a complete snapshot of the contents of a calendar (e.g.,
composite of many different calendar components). More commonly, an
iCalendar object will consist of just a single "VEVENT", "VTODO" or
"VJOURNAL" calendar component.

4.6.1 Event Component

Component Name: "VEVENT"

Purpose: Provide a grouping of component properties that describe an
event.

Format Definition: A "VEVENT" calendar component is defined by the
following notation:

eventc = "BEGIN" ":" "VEVENT" CRLF
eventprop *alarmc
"END" ":" "VEVENT" CRLF

eventprop = *(

; the following are optional,
; but MUST NOT occur more than once

class / created / description / dtstart / geo /

last-mod / location / organizer / priority /
dtstamp / seq / status / summary / transp /
uid / url / recurid /

; either 'dtend' or 'duration' may appear in
; a 'eventprop', but 'dtend' and 'duration'
; MUST NOT occur in the same 'eventprop'

dtend / duration /

; the following are optional,
; and MAY occur more than once

attach / attendee / categories / comment /
contact / exdate / exrule / rstatus / related /
resources / rdate / rrule / x-prop

)

Description: A "VEVENT" calendar component is a grouping of component
properties, and possibly including "VALARM" calendar components, that
represents a scheduled amount of time on a calendar. For example, it
can be an activity; such as a one-hour long, department meeting from
8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up time
on an individual calendar. Hence, the event will appear as an opaque
interval in a search for busy time. Alternately, the event can have
its Time Transparency set to "TRANSPARENT" in order to prevent
blocking of the event in searches for busy time.

The "VEVENT" is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a
DATE value type for the "DTSTART" property instead of the default
data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
MUST be specified as a DATE value also. The anniversary type of
"VEVENT" can span more than one date (i.e, "DTEND" property value is
set to a calendar date after the "DTSTART" property value).

The "DTSTART" property for a "VEVENT" specifies the inclusive start
of the event. For recurring events, it also specifies the very first
instance in the recurrence set. The "DTEND" property for a "VEVENT"
calendar component specifies the non-inclusive end of the event. For
cases where a "VEVENT" calendar component specifies a "DTSTART"
property with a DATE data type but no "DTEND" property, the events
non-inclusive end is the end of the calendar date specified by the
"DTSTART" property. For cases where a "VEVENT" calendar component
specifies a "DTSTART" property with a DATE-TIME data type but no
"DTEND" property, the event ends on the same calendar date and time
of day specified by the "DTSTART" property.

The "VEVENT" calendar component cannot be nested within another
calendar component. However, "VEVENT" calendar components can be
related to each other or to a "VTODO" or to a "VJOURNAL" calendar
component with the "RELATED-TO" property.

Example: The following is an example of the "VEVENT" calendar
component used to represent a meeting that will also be opaque to
searches for busy time:

BEGIN:VEVENT
UID:19970901T130000Z-123401@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970903T163000Z
DTEND:19970903T190000Z
SUMMARY:Annual Employee Review
CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT

The following is an example of the "VEVENT" calendar component used
to represent a reminder that will not be opaque, but rather
transparent, to searches for busy time:

BEGIN:VEVENT
UID:19970901T130000Z-123402@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970401T163000Z
DTEND:19970402T010000Z
SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT
END:VEVENT

The following is an example of the "VEVENT" calendar component used
to represent an anniversary that will occur annually. Since it takes
up no time, it will not appear as opaque in a search for busy time;
no matter what the value of the "TRANSP" property indicates:

BEGIN:VEVENT
UID:19970901T130000Z-123403@host.com
DTSTAMP:19970901T1300Z
DTSTART:19971102
SUMMARY:Our Blissful Anniversary
CLASS:CONFIDENTIAL
CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
RRULE:FREQ=YEARLY
END:VEVENT

4.6.2 To-do Component

Component Name: VTODO

Purpose: Provide a grouping of calendar properties that describe a
to-do.

Formal Definition: A "VTODO" calendar component is defined by the
following notation:

todoc = "BEGIN" ":" "VTODO" CRLF
todoprop *alarmc
"END" ":" "VTODO" CRLF

todoprop = *(

; the following are optional,
; but MUST NOT occur more than once

class / completed / created / description / dtstamp /
dtstart / geo / last-mod / location / organizer /
percent / priority / recurid / seq / status /
summary / uid / url /

; either 'due' or 'duration' may appear in
; a 'todoprop', but 'due' and 'duration'
; MUST NOT occur in the same 'todoprop'

due / duration /

; the following are optional,
; and MAY occur more than once
attach / attendee / categories / comment / contact /
exdate / exrule / rstatus / related / resources /
rdate / rrule / x-prop

)

Description: A "VTODO" calendar component is a grouping of component
properties and possibly "VALARM" calendar components that represent
an action-item or assignment. For example, it can be used to
represent an item of work assigned to an individual; such as "turn in
travel expense today".

The "VTODO" calendar component cannot be nested within another
calendar component. However, "VTODO" calendar components can be
related to each other or to a "VTODO" or to a "VJOURNAL" calendar
component with the "RELATED-TO" property.

A "VTODO" calendar component without the "DTSTART" and "DUE" (or
"DURATION") properties specifies a to-do that will be associated with
each successive calendar date, until it is completed.

Example: The following is an example of a "VTODO" calendar component:

BEGIN:VTODO
UID:19970901T130000Z-123404@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970415T133000Z
DUE:19970416T045959Z
SUMMARY:1996 Income Tax Preparation
CLASS:CONFIDENTIAL
CATEGORIES:FAMILY,FINANCE
PRIORITY:1
STATUS:NEEDS-ACTION
END:VTODO

4.6.3 Journal Component

Component Name: VJOURNAL

Purpose: Provide a grouping of component properties that describe a
journal entry.

Formal Definition: A "VJOURNAL" calendar component is defined by the
following notation:

journalc = "BEGIN" ":" "VJOURNAL" CRLF
jourprop
"END" ":" "VJOURNAL" CRLF

jourprop = *(

; the following are optional,
; but MUST NOT occur more than once

class / created / description / dtstart / dtstamp /
last-mod / organizer / recurid / seq / status /
summary / uid / url /

; the following are optional,
; and MAY occur more than once

attach / attendee / categories / comment /
contact / exdate / exrule / related / rdate /
rrule / rstatus / x-prop

)

Description: A "VJOURNAL" calendar component is a grouping of
component properties that represent one or more descriptive text
notes associated with a particular calendar date. The "DTSTART"
property is used to specify the calendar date that the journal entry
is associated with. Generally, it will have a DATE value data type,
but it can also be used to specify a DATE-TIME value data type.
Examples of a journal entry include a daily record of a legislative
body or a journal entry of individual telephone contacts for the day
or an ordered list of accomplishments for the day. The "VJOURNAL"
calendar component can also be used to associate a document with a
calendar date.

The "VJOURNAL" calendar component does not take up time on a
calendar. Hence, it does not play a role in free or busy time
searches - - it is as though it has a time transparency value of
TRANSPARENT. It is transparent to any such searches.

The "VJOURNAL" calendar component cannot be nested within another
calendar component. However, "VJOURNAL" calendar components can be
related to each other or to a "VEVENT" or to a "VTODO" calendar
component, with the "RELATED-TO" property.

Example: The following is an example of the "VJOURNAL" calendar
component:

BEGIN:VJOURNAL
UID:19970901T130000Z-123405@host.com
DTSTAMP:19970901T1300Z
DTSTART;VALUE=DATE:19970317
SUMMARY:Staff meeting minutes
DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa
and Bob. Aurora project plans were reviewed. There is currently
no budget reserves for this project. Lisa will escalate to
management. Next meeting on Tuesday.\n
2. Telephone Conference: ABC Corp. sales representative called
to discuss new printer. Promised to get us a demo by Friday.\n
3. Henry Miller (Handsoff Insurance): Car was totaled by tree.
Is looking into a loaner car. 654-2323 (tel).
END:VJOURNAL

4.6.4 Free/Busy Component

Component Name: VFREEBUSY

Purpose: Provide a grouping of component properties that describe
either a request for free/busy time, describe a response to a request
for free/busy time or describe a published set of busy time.

Formal Definition: A "VFREEBUSY" calendar component is defined by the
following notation:

freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF
fbprop
"END" ":" "VFREEBUSY" CRLF

fbprop = *(

; the following are optional,
; but MUST NOT occur more than once

contact / dtstart / dtend / duration / dtstamp /
organizer / uid / url /

; the following are optional,
; and MAY occur more than once

attendee / comment / freebusy / rstatus / x-prop

)

Description: A "VFREEBUSY" calendar component is a grouping of
component properties that represents either a request for, a reply to
a request for free or busy time information or a published set of
busy time information.

When used to request free/busy time information, the "ATTENDEE"
property specifies the calendar users whose free/busy time is being
requested; the "ORGANIZER" property specifies the calendar user who
is requesting the free/busy time; the "DTSTART" and "DTEND"
properties specify the window of time for which the free/busy time is
being requested; the "UID" and "DTSTAMP" properties are specified to
assist in proper sequencing of multiple free/busy time requests.

When used to reply to a request for free/busy time, the "ATTENDEE"
property specifies the calendar user responding to the free/busy time
request; the "ORGANIZER" property specifies the calendar user that
originally requested the free/busy time; the "FREEBUSY" property
specifies the free/busy time information (if it exists); and the

"UID" and "DTSTAMP" properties are specified to assist in proper
sequencing of multiple free/busy time replies.

When used to publish busy time, the "ORGANIZER" property specifies
the calendar user associated with the published busy time; the
"DTSTART" and "DTEND" properties specify an inclusive time window
that surrounds the busy time information; the "FREEBUSY" property
specifies the published busy time information; and the "DTSTAMP"
property specifies the date/time that iCalendar object was created.

The "VFREEBUSY" calendar component cannot be nested within another
calendar component. Multiple "VFREEBUSY" calendar components can be
specified within an iCalendar object. This permits the grouping of
Free/Busy information into logical collections, such as monthly
groups of busy time information.

The "VFREEBUSY" calendar component is intended for use in iCalendar
object methods involving requests for free time, requests for busy
time, requests for both free and busy, and the associated replies.

Free/Busy information is represented with the "FREEBUSY" property.
This property provides a terse representation of time periods. One or
more "FREEBUSY" properties can be specified in the "VFREEBUSY"
calendar component.

When present in a "VFREEBUSY" calendar component, the "DTSTART" and
"DTEND" properties SHOULD be specified prior to any "FREEBUSY"
properties. In a free time request, these properties can be used in
combination with the "DURATION" property to represent a request for a
duration of free time within a specified window of time.

The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are
not permitted within a "VFREEBUSY" calendar component. Any recurring
events are resolved into their individual busy time periods using the
"FREEBUSY" property.

Example: The following is an example of a "VFREEBUSY" calendar
component used to request free or busy time information:

BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe@host1.com
ATTENDEE:MAILTO:john_public@host2.com
DTSTART:19971015T050000Z
DTEND:19971016T050000Z
DTSTAMP:19970901T083000Z
END:VFREEBUSY

The following is an example of a "VFREEBUSY" calendar component used
to reply to the request with busy time information:

BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe@host1.com
ATTENDEE:MAILTO:john_public@host2.com
DTSTAMP:19970901T100000Z
FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
URL:http://host2.com/pub/busy/jpublic-01.ifb
COMMENT:This iCalendar file contains busy time information for
the next three months.
END:VFREEBUSY

The following is an example of a "VFREEBUSY" calendar component used
to publish busy time information.

BEGIN:VFREEBUSY
ORGANIZER:jsmith@host.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY

4.6.5 Time Zone Component

Component Name: VTIMEZONE

Purpose: Provide a grouping of component properties that defines a
time zone.

Formal Definition: A "VTIMEZONE" calendar component is defined by the
following notation:

timezonec = "BEGIN" ":" "VTIMEZONE" CRLF

2*(

; 'tzid' is required, but MUST NOT occur more
; than once

tzid /

; 'last-mod' and 'tzurl' are optional,
but MUST NOT occur more than once

last-mod / tzurl /

; one of 'standardc' or 'daylightc' MUST occur
..; and each MAY occur more than once.

standardc / daylightc /

; the following is optional,
; and MAY occur more than once

x-prop

)

"END" ":" "VTIMEZONE" CRLF

standardc = "BEGIN" ":" "STANDARD" CRLF

tzprop

"END" ":" "STANDARD" CRLF

daylightc = "BEGIN" ":" "DAYLIGHT" CRLF

tzprop

"END" ":" "DAYLIGHT" CRLF

tzprop = 3*(

; the following are each REQUIRED,
; but MUST NOT occur more than once

dtstart / tzoffsetto / tzoffsetfrom /

; the following are optional,
; and MAY occur more than once

comment / rdate / rrule / tzname / x-prop

)

Description: A time zone is unambiguously defined by the set of time
measurement rules determined by the governing body for a given
geographic area. These rules describe at a minimum the base offset
from UTC for the time zone, often referred to as the Standard Time
offset. Many locations adjust their Standard Time forward or backward
by one hour, in order to accommodate seasonal changes in number of

daylight hours, often referred to as Daylight Saving Time. Some
locations adjust their time by a fraction of an hour. Standard Time
is also known as Winter Time. Daylight Saving Time is also known as
Advanced Time, Summer Time, or Legal Time in certain countries. The
following table shows the changes in time zone rules in effect for
New York City starting from 1967. Each line represents a description
or rule for a particular observance.

Effective Observance Rule

Date (Date/Time) Offset Abbreviation

1967-* last Sun in Oct, 02:00 -0500 EST

1967-1973 last Sun in Apr, 02:00 -0400 EDT

1974-1974 Jan 6, 02:00 -0400 EDT

1975-1975 Feb 23, 02:00 -0400 EDT

1976-1986 last Sun in Apr, 02:00 -0400 EDT

1987-* first Sun in Apr, 02:00 -0400 EDT

Note: The specification of a global time zone registry is not
addressed by this document and is left for future study.
However, implementers may find the Olson time zone database [TZ]
a useful reference. It is an informal, public-domain collection
of time zone information, which is currently being maintained by
volunteer Internet participants, and is used in several
operating systems. This database contains current and historical
time zone information for a wide variety of locations around the
globe; it provides a time zone identifier for every unique time
zone rule set in actual use since 1970, with historical data
going back to the introduction of standard time.

Interoperability between two calendaring and scheduling applications,
especially for recurring events, to-dos or journal entries, is
dependent on the ability to capture and convey date and time
information in an unambiguous format. The specification of current
time zone information is integral to this behavior.

If present, the "VTIMEZONE" calendar component defines the set of
Standard Time and Daylight Saving Time observances (or rules) for a
particular time zone for a given interval of time. The "VTIMEZONE"
calendar component cannot be nested within other calendar components.
Multiple "VTIMEZONE" calendar components can exist in an iCalendar
object. In this situation, each "VTIMEZONE" MUST represent a unique

time zone definition. This is necessary for some classes of events,
such as airline flights, that start in one time zone and end in
another.

The "VTIMEZONE" calendar component MUST be present if the iCalendar
object contains an RRULE that generates dates on both sides of a time
zone shift (e.g. both in Standard Time and Daylight Saving Time)
unless the iCalendar object intends to convey a floating time (See
the section "4.1.10.11 Time" for proper interpretation of floating
time). It can be present if the iCalendar object does not contain
such a RRULE. In addition, if a RRULE is present, there MUST be valid
time zone information for all recurrence instances.

The "VTIMEZONE" calendar component MUST include the "TZID" property
and at least one definition of a standard or daylight component. The
standard or daylight component MUST include the "DTSTART",
"TZOFFSETFROM" and "TZOFFSETTO" properties.

An individual "VTIMEZONE" calendar component MUST be specified for
each unique "TZID" parameter value specified in the iCalendar object.

Each "VTIMEZONE" calendar component consists of a collection of one
or more sub-components that describe the rule for a particular
observance (either a Standard Time or a Daylight Saving Time
observance). The "STANDARD" sub-component consists of a collection of
properties that describe Standard Time. The "DAYLIGHT" sub-component
consists of a collection of properties that describe Daylight Saving
Time. In general this collection of properties consists of:

- the first onset date-time for the observance

- the last onset date-time for the observance, if a last onset
is known.

- the offset to be applied for the observance

- a rule that describes the day and time when the observance
takes effect

- an optional name for the observance

For a given time zone, there may be multiple unique definitions of
the observances over a period of time. Each observance is described
using either a "STANDARD" or "DAYLIGHT" sub-component. The collection
of these sub-components is used to describe the time zone for a given
period of time. The offset to apply at any given time is found by
locating the observance that has the last onset date and time before
the time in question, and using the offset value from that

observance.

The top-level properties in a "VTIMEZONE" calendar component are:

The mandatory "TZID" property is a text value that uniquely
identifies the VTIMZONE calendar component within the scope of an
iCalendar object.

The optional "LAST-MODIFIED" property is a UTC value that specifies
the date and time that this time zone definition was last updated.

The optional "TZURL" property is url value that points to a published
VTIMEZONE definition. TZURL SHOULD refer to a resource that is
accessible by anyone who might need to interpret the object. This
SHOULD NOT normally be a file: URL or other URL that is not widely-
accessible.

The collection of properties that are used to define the STANDARD and
DAYLIGHT sub-components include:

The mandatory "DTSTART" property gives the effective onset date and
local time for the time zone sub-component definition. "DTSTART" in
this usage MUST be specified as a local DATE-TIME value.

The mandatory "TZOFFSETFROM" property gives the UTC offset which is
in use when the onset of this time zone observance begins.
"TZOFFSETFROM" is combined with "DTSTART" to define the effective
onset for the time zone sub-component definition. For example, the
following represents the time at which the observance of Standard
Time took effect in Fall 1967 for New York City:

DTSTART:19671029T020000

TZOFFSETFROM:-0400

The mandatory "TZOFFSETTO " property gives the UTC offset for the
time zone sub-component (Standard Time or Daylight Saving Time) when
this observance is in use.

The optional "TZNAME" property is the customary name for the time
zone. It may be specified multiple times, to allow for specifying
multiple language variants of the time zone names. This could be used
for displaying dates.

If specified, the onset for the observance defined by the time zone
sub-component is defined by either the "RRULE" or "RDATE" property.
If neither is specified, only one sub-component can be specified in
the "VTIMEZONE" calendar component and it is assumed that the single

observance specified is always in effect.

The "RRULE" property defines the recurrence rule for the onset of the
observance defined by this time zone sub-component. Some specific
requirements for the usage of RRULE for this purpose include:

- If observance is known to have an effective end date, the
"UNTIL" recurrence rule parameter MUST be used to specify the
last valid onset of this observance (i.e., the UNTIL date-time
will be equal to the last instance generated by the recurrence
pattern). It MUST be specified in UTC time.

- The "DTSTART" and the "TZOFFSETTO" properties MUST be used
when generating the onset date-time values (instances) from the
RRULE.

Alternatively, the "RDATE" property can be used to define the onset
of the observance by giving the individual onset date and times.
"RDATE" in this usage MUST be specified as a local DATE-TIME value in
UTC time.

The optional "COMMENT" property is also allowed for descriptive
explanatory text.

Example: The following are examples of the "VTIMEZONE" calendar
component:

This is an example showing time zone information for the Eastern
United States using "RDATE" property. Note that this is only suitable
for a recurring event that starts on or later than April 6, 1997 at
03:00:00 EDT (i.e., the earliest effective transition date and time)
and ends no later than April 7, 1998 02:00:00 EST (i.e., latest valid
date and time for EST in this scenario). For example, this can be
used for a recurring event that occurs every Friday, 8am-9:00 AM,
starting June 1, 1997, ending December 31, 1997.

BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19971026T020000
RDATE:19971026T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19971026T020000

RDATE:19970406T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE

This is a simple example showing the current time zone rules for the
Eastern United States using a RRULE recurrence pattern. Note that
there is no effective end date to either of the Standard Time or
Daylight Time rules. This information would be valid for a recurring
event starting today and continuing indefinitely.

BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:19870101T000000Z
TZURL:http://zones.stds_r_us.net/tz/US-Eastern
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE

This is an example showing a fictitious set of rules for the Eastern
United States, where the Daylight Time rule has an effective end date
(i.e., after that date, Daylight Time is no longer observed).

BEGIN:VTIMEZONE
TZID:US--Fictitious-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD

BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE

This is an example showing a fictitious set of rules for the Eastern
United States, where the first Daylight Time rule has an effective
end date. There is a second Daylight Time rule that picks up where
the other left off.

BEGIN:VTIMEZONE
TZID:US--Fictitious-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19990424T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE

4.6.6 Alarm Component

Component Name: VALARM

Purpose: Provide a grouping of component properties that define an
alarm.

Formal Definition: A "VALARM" calendar component is defined by the
following notation:

alarmc = "BEGIN" ":" "VALARM" CRLF
(audioprop / dispprop / emailprop / procprop)
"END" ":" "VALARM" CRLF

audioprop = 2*(

; 'action' and 'trigger' are both REQUIRED,
; but MUST NOT occur more than once

action / trigger /

; 'duration' and 'repeat' are both optional,
; and MUST NOT occur more than once each,
; but if one occurs, so MUST the other

duration / repeat /

; the following is optional,
; but MUST NOT occur more than once

attach /

; the following is optional,
; and MAY occur more than once

x-prop

)

dispprop = 3*(

; the following are all REQUIRED,
; but MUST NOT occur more than once

action / description / trigger /

; 'duration' and 'repeat' are both optional,
; and MUST NOT occur more than once each,
; but if one occurs, so MUST the other

duration / repeat /

; the following is optional,

; and MAY occur more than once

*x-prop

)

emailprop = 5*(

; the following are all REQUIRED,
; but MUST NOT occur more than once

action / description / trigger / summary

; the following is REQUIRED,
; and MAY occur more than once

attendee /

; 'duration' and 'repeat' are both optional,
; and MUST NOT occur more than once each,
; but if one occurs, so MUST the other

duration / repeat /

; the following are optional,
; and MAY occur more than once

attach / x-prop

)

procprop = 3*(

; the following are all REQUIRED,
; but MUST NOT occur more than once

action / attach / trigger /

; 'duration' and 'repeat' are both optional,
; and MUST NOT occur more than once each,
; but if one occurs, so MUST the other

duration / repeat /

; 'description' is optional,
; and MUST NOT occur more than once

description /

; the following is optional,
; and MAY occur more than once

x-prop

)

Description: A "VALARM" calendar component is a grouping of component
properties that is a reminder or alarm for an event or a to-do. For
example, it may be used to define a reminder for a pending event or
an overdue to-do.

The "VALARM" calendar component MUST include the "ACTION" and
"TRIGGER" properties. The "ACTION" property further constrains the
"VALARM" calendar component in the following ways:

When the action is "AUDIO", the alarm can also include one and only
one "ATTACH" property, which MUST point to a sound resource, which is
rendered when the alarm is triggered.

When the action is "DISPLAY", the alarm MUST also include a
"DESCRIPTION" property, which contains the text to be displayed when
the alarm is triggered.

When the action is "EMAIL", the alarm MUST include a "DESCRIPTION"
property, which contains the text to be used as the message body, a
"SUMMARY" property, which contains the text to be used as the message
subject, and one or more "ATTENDEE" properties, which contain the
email address of attendees to receive the message. It can also
include one or more "ATTACH" properties, which are intended to be
sent as message attachments. When the alarm is triggered, the email
message is sent.

When the action is "PROCEDURE", the alarm MUST include one and only
one "ATTACH" property, which MUST point to a procedure resource,
which is invoked when the alarm is triggered.

The "VALARM" calendar component MUST only appear within either a
"VEVENT" or "VTODO" calendar component. "VALARM" calendar components
cannot be nested. Multiple mutually independent "VALARM" calendar
components can be specified for a single "VEVENT" or "VTODO" calendar
component.

The "TRIGGER" property specifies when the alarm will be triggered.
The "TRIGGER" property specifies a duration prior to the start of an
event or a to-do. The "TRIGGER" edge may be explicitly set to be
relative to the "START" or "END" of the event or to-do with the
"RELATED" parameter of the "TRIGGER" property. The "TRIGGER" property
value type can alternatively be set to an absolute calendar date and
time of day value.

In an alarm set to trigger on the "START" of an event or to-do, the
"DTSTART" property MUST be present in the associated event or to-do.
In an alarm in a "VEVENT" calendar component set to trigger on the
"END" of the event, either the "DTEND" property MUST be present, or
the "DTSTART" and "DURATION" properties MUST both be present. In an
alarm in a "VTODO" calendar component set to trigger on the "END" of
the to-do, either the "DUE" property MUST be present, or the
"DTSTART" and "DURATION" properties MUST both be present.

The alarm can be defined such that it triggers repeatedly. A
definition of an alarm with a repeating trigger MUST include both the
"DURATION" and "REPEAT" properties. The "DURATION" property specifies
the delay period, after which the alarm will repeat. The "REPEAT"
property specifies the number of additional repetitions that the
alarm will triggered. This repitition count is in addition to the
initial triggering of the alarm. Both of these properties MUST be
present in order to specify a repeating alarm. If one of these two
properties is absent, then the alarm will not repeat beyond the
initial trigger.

The "ACTION" property is used within the "VALARM" calendar component
to specify the type of action invoked when the alarm is triggered.
The "VALARM" properties provide enough information for a specific
action to be invoked. It is typically the responsibility of a
"Calendar User Agent" (CUA) to deliver the alarm in the specified
fashion. An "ACTION" property value of AUDIO specifies an alarm that
causes a sound to be played to alert the user; DISPLAY specifies an
alarm that causes a text message to be displayed to the user; EMAIL
specifies an alarm that causes an electronic email message to be
delivered to one or more email addresses; and PROCEDURE specifies an
alarm that causes a procedure to be executed. The "ACTION" property
MUST specify one and only one of these values.

In an AUDIO alarm, if the optional "ATTACH" property is included, it
MUST specify an audio sound resource. The intention is that the sound
will be played as the alarm effect. If an "ATTACH" property is
specified that does not refer to a sound resource, or if the
specified sound resource cannot be rendered (because its format is
unsupported, or because it cannot be retrieved), then the CUA or
other entity responsible for playing the sound may choose a fallback

action, such as playing a built-in default sound, or playing no sound
at all.

In a DISPLAY alarm, the intended alarm effect is for the text value
of the "DESCRIPTION" property to be displayed to the user.

In an EMAIL alarm, the intended alarm effect is for an email message
to be composed and delivered to all the addresses specified by the
"ATTENDEE" properties in the "VALARM" calendar component. The
"DESCRIPTION" property of the "VALARM" calendar component MUST be
used as the body text of the message, and the "SUMMARY" property MUST
be used as the subject text. Any "ATTACH" properties in the "VALARM"
calendar component SHOULD be sent as attachments to the message.

In a PROCEDURE alarm, the "ATTACH" property in the "VALARM" calendar
component MUST specify a procedure or program that is intended to be
invoked as the alarm effect. If the procedure or program is in a
format that cannot be rendered, then no procedure alarm will be
invoked. If the "DESCRIPTION" property is present, its value
specifies the argument string to be passed to the procedure or
program. "Calendar User Agents" that receive an iCalendar object with
this category of alarm, can disable or allow the "Calendar User" to
disable, or otherwise ignore this type of alarm. While a very useful
alarm capability, the PROCEDURE type of alarm SHOULD be treated by
the "Calendar User Agent" as a potential security risk.

Example: The following example is for a "VALARM" calendar component
that specifies an audio alarm that will sound at a precise time and
repeat 4 more times at 15 minute intervals:

BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19970317T133000Z
REPEAT:4
DURATION:PT15M
ACTION:AUDIO
ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud
END:VALARM

The following example is for a "VALARM" calendar component that
specifies a display alarm that will trigger 30 minutes before the
scheduled start of the event or the due date/time of the to-do it is
associated with and will repeat 2 more times at 15 minute intervals:

BEGIN:VALARM
TRIGGER:-PT30M
REPEAT:2
DURATION:PT15M
ACTION:DISPLAY

DESCRIPTION:Breakfast meeting with executive\n
team at 8:30 AM EST.
END:VALARM

The following example is for a "VALARM" calendar component that
specifies an email alarm that will trigger 2 days before the
scheduled due date/time of a to-do it is associated with. It does not
repeat. The email has a subject, body and attachment link.

BEGIN:VALARM
TRIGGER:-P2D
ACTION:EMAIL
ATTENDEE:MAILTO:john_doe@host.com
SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
DESCRIPTION:A draft agenda needs to be sent out to the attendees
to the weekly managers meeting (MGR-LIST). Attached is a
pointer the document template for the agenda file.
ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen
da.doc
END:VALARM

The following example is for a "VALARM" calendar component that
specifies a procedural alarm that will trigger at a precise date/time
and will repeat 23 more times at one hour intervals. The alarm will
invoke a procedure file.

BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19980101T050000Z
REPEAT:23
DURATION:PT1H
ACTION:PROCEDURE
ATTACH;FMTTYPE=application/binary:ftp://host.com/novo-
procs/felizano.exe
END:VALARM

4.7 Calendar Properties

The Calendar Properties are attributes that apply to the iCalendar
object, as a whole. These properties do not appear within a calendar
component. They SHOULD be specified after the "BEGIN:VCALENDAR"
property and prior to any calendar component.

4.7.1 Calendar Scale

Property Name: CALSCALE

Purpose: This property defines the calendar scale used for the
calendar information specified in the iCalendar object.

Value Type: TEXT

Property Parameters: Non-standard property parameters can be
specified on this property.

Conformance: Property can be specified in an iCalendar object. The
default value is "GREGORIAN".

Description: This memo is based on the Gregorian calendar scale. The
Gregorian calendar scale is assumed if this property is not specified
in the iCalendar object. It is expected that other calendar scales
will be defined in other specifications or by future versions of this
memo.

Format Definition: The property is defined by the following notation:

calscale = "CALSCALE" calparam ":" calvalue CRLF

calparam = *(";" xparam)

calvalue = "GREGORIAN" / iana-token

Example: The following is an example of this property:

CALSCALE:GREGORIAN

4.7.2 Method

Property Name: METHOD

Purpose: This property defines the iCalendar object method associated
with the calendar object.

Value Type: TEXT

Property Parameters: Non-standard property parameters can be
specified on this property.

Conformance: The property can be specified in an iCalendar object.

Description: When used in a MIME message entity, the value of this
property MUST be the same as the Content-Type "method" parameter
value. This property can only appear once within the iCalendar
object. If either the "METHOD" property or the Content-Type "method"
parameter is specified, then the other MUST also be specified.

No methods are defined by this specification. This is the subject of
other specifications, such as the iCalendar Transport-independent

Interoperability Protocol (iTIP) defined by [ITIP].

If this property is not present in the iCalendar object, then a
scheduling transaction MUST NOT be assumed. In such cases, the
iCalendar object is merely being used to transport a snapshot of some
calendar information; without the intention of conveying a scheduling
semantic.

Format Definition: The property is defined by the following notation:

method = "METHOD" metparam ":" metvalue CRLF

metparam = *(";" xparam)

metvalue = iana-token

Example: The following is a hypothetical example of this property to
convey that the iCalendar object is a request for a meeting:

METHOD:REQUEST

4.7.3 Product Identifier

Property Name: PRODID

Purpose: This property specifies the identifier for the product that
created the iCalendar object.

Value Type: TEXT

Property Parameters: Non-standard property parameters can be
specified on this property.

Conformance: The property MUST be specified once in an iCalendar
object.

Description: The vendor of the implementation SHOULD assure that this
is a globally unique identifier; using some technique such as an FPI
value, as defined in [ISO 9070].

This property SHOULD not be used to alter the interpretation of an
iCalendar object beyond the semantics specified in this memo. For
example, it is not to be used to further the understanding of non-
standard properties.

Format Definition: The property is defined by the following notation:

prodid = "PRODID" pidparam ":" pidvalue CRLF

pidparam = *(";" xparam)

pidvalue = text
;Any text that describes the product and version
;and that is generally assured of being unique.

Example: The following is an example of this property. It does not
imply that English is the default language.

PRODID:-//ABC Corporation//NONSGML My Product//EN

4.7.4 Version

Property Name: VERSION

Purpose: This property specifies the identifier corresponding to the
highest version number or the minimum and maximum range of the
iCalendar specification that is required in order to interpret the
iCalendar object.

Value Type: TEXT

Property Parameters: Non-standard property parameters can be
specified on this property.

Conformance: This property MUST be specified by an iCalendar object,
but MUST only be specified once.

Description: A value of "2.0" corresponds to this memo.

Format Definition: The property is defined by the following notation:

version = "VERSION" verparam ":" vervalue CRLF

verparam = *(";" xparam)

vervalue = "2.0" ;This memo
/ maxver
/ (minver ";" maxver)

minver = <A IANA registered iCalendar version identifier>
;Minimum iCalendar version needed to parse the iCalendar object

maxver = <A IANA registered iCalendar version identifier>
;Maximum iCalendar version needed to parse the iCalendar object

Example: The following is an example of this property:

VERSION:2.0

4.8 Component Properties

The following properties can appear within calendar components, as
specified by each component property definition.

4.8.1 Descriptive Component Properties

The following properties specify descriptive information about
calendar components.

4.8.1.1 Attachment

Property Name: ATTACH

Purpose: The property provides the capability to associate a document
object with a calendar component.

Value Type: The default value type for this property is URI. The
value type can also be set to BINARY to indicate inline binary
encoded content information.

Property Parameters: Non-standard, inline encoding, format type and
value data type property parameters can be specified on this
property.

Conformance: The property can be specified in a "VEVENT", "VTODO",
"VJOURNAL" or "VALARM" calendar components.

Description: The property can be specified within "VEVENT", "VTODO",
"VJOURNAL", or "VALARM" calendar components. This property can be
specified multiple times within an iCalendar object.

Format Definition: The property is defined by the following notation:

attach = "ATTACH" attparam ":" uri CRLF

attach =/ "ATTACH" attparam ";" "ENCODING" "=" "BASE64"
";" "VALUE" "=" "BINARY" ":" binary

attparam = *(

; the following is optional,
; but MUST NOT occur more than once

(";" fmttypeparam) /

; the following is optional,
; and MAY occur more than once

(";" xparam)

)

Example: The following are examples of this property:

ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com

ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/
reports/r-960812.ps

4.8.1.2 Categories

Property Name: CATEGORIES

Purpose: This property defines the categories for a calendar
component.

Value Type: TEXT

Property Parameters: Non-standard and language property parameters
can be specified on this property.

Conformance: The property can be specified within "VEVENT", "VTODO"
or "VJOURNAL" calendar components.

Description: This property is used to specify categories or subtypes
of the calendar component. The categories are useful in searching for
a calendar component of a particular type and category. Within the
"VEVENT", "VTODO" or "VJOURNAL" calendar components, more than one
category can be specified as a list of categories separated by the
COMMA character (US-ASCII decimal 44).

Format Definition: The property is defined by the following notation:

categories = "CATEGORIES" catparam ":" text *("," text)
CRLF

catparam = *(

; the following is optional,
; but MUST NOT occur more than once

(";" languageparam ) /

; the following is optional,
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容