Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 7953                                         Apple
Updates: 4791, 5545, 6638                                    M. Douglass
Category: Standards Track                            Spherical Cow Group
ISSN: 2070-1721                                              August 2016
        
Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 7953                                         Apple
Updates: 4791, 5545, 6638                                    M. Douglass
Category: Standards Track                            Spherical Cow Group
ISSN: 2070-1721                                              August 2016
        

Calendar Availability

日历可用性

Abstract

摘要

This document specifies a new iCalendar (RFC 5545) component that allows the publication of available and unavailable time periods associated with a calendar user. This component can be used in standard iCalendar free-busy lookups, including the iCalendar Transport-independent Interoperability Protocol (iTIP; RFC 5546) free-busy requests, to generate repeating blocks of available or busy time with exceptions as needed.

本文档指定了一个新的iCalendar(RFC 5545)组件,该组件允许发布与日历用户关联的可用和不可用时间段。此组件可用于标准iCalendar忙/闲查找,包括iCalendar传输独立互操作性协议(iTIP;RFC 5546)忙/闲请求,以生成重复的可用或忙时间块,并根据需要生成异常。

This document also defines extensions to the Calendaring Extensions to WebDAV (CalDAV) calendar access protocol (RFC 4791) and the associated scheduling protocol (RFC 6638) to specify how this new calendar component can be used when evaluating free-busy time.

本文档还定义了WebDAV(CalDAV)日历访问协议(RFC 4791)和相关调度协议(RFC 6638)的日历扩展,以指定在评估忙/闲时间时如何使用此新日历组件。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7953.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc7953.

Copyright Notice

版权公告

Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2016 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Conventions Used in This Document . . . . . . . . . . . . . .   3
   3.  iCalendar Extensions  . . . . . . . . . . . . . . . . . . . .   4
     3.1.  VAVAILABILITY Component . . . . . . . . . . . . . . . . .   4
     3.2.  Busy Time Type  . . . . . . . . . . . . . . . . . . . . .  10
   4.  Combining VAVAILABILITY Components  . . . . . . . . . . . . .  10
   5.  Calculating Free-Busy Time  . . . . . . . . . . . . . . . . .  12
     5.1.  Examples  . . . . . . . . . . . . . . . . . . . . . . . .  13
   6.  Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . .  15
   7.  CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . .  15
     7.1.  CalDAV Requirements Overview  . . . . . . . . . . . . . .  15
     7.2.  New Features in CalDAV  . . . . . . . . . . . . . . . . .  16
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  19
   9.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  19
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  20
     10.1.  Component Registrations  . . . . . . . . . . . . . . . .  20
     10.2.  Property Registrations . . . . . . . . . . . . . . . . .  20
   11. Normative References  . . . . . . . . . . . . . . . . . . . .  20
   Appendix A.  Example Calendar #1  . . . . . . . . . . . . . . . .  22
   Appendix B.  Example Calendar #2  . . . . . . . . . . . . . . . .  23
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  24
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  24
        
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Conventions Used in This Document . . . . . . . . . . . . . .   3
   3.  iCalendar Extensions  . . . . . . . . . . . . . . . . . . . .   4
     3.1.  VAVAILABILITY Component . . . . . . . . . . . . . . . . .   4
     3.2.  Busy Time Type  . . . . . . . . . . . . . . . . . . . . .  10
   4.  Combining VAVAILABILITY Components  . . . . . . . . . . . . .  10
   5.  Calculating Free-Busy Time  . . . . . . . . . . . . . . . . .  12
     5.1.  Examples  . . . . . . . . . . . . . . . . . . . . . . . .  13
   6.  Use with iTIP . . . . . . . . . . . . . . . . . . . . . . . .  15
   7.  CalDAV Extensions . . . . . . . . . . . . . . . . . . . . . .  15
     7.1.  CalDAV Requirements Overview  . . . . . . . . . . . . . .  15
     7.2.  New Features in CalDAV  . . . . . . . . . . . . . . . . .  16
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  19
   9.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  19
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  20
     10.1.  Component Registrations  . . . . . . . . . . . . . . . .  20
     10.2.  Property Registrations . . . . . . . . . . . . . . . . .  20
   11. Normative References  . . . . . . . . . . . . . . . . . . . .  20
   Appendix A.  Example Calendar #1  . . . . . . . . . . . . . . . .  22
   Appendix B.  Example Calendar #2  . . . . . . . . . . . . . . . .  23
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  24
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  24
        
1. Introduction
1. 介绍

Calendar users often have regular periods of time when they are either available to be scheduled or always unavailable. For example, an office worker will often wish only to appear free to their work colleagues during normal 'office hours' (e.g., Monday through Friday, 9 am through 5 pm). Or, a university professor might only be available to students during a set period of time (e.g., Thursday afternoons, 2 pm through 5 pm during term time only). Ideally, users ought be able to specify such periods directly via their calendar user agent and have them automatically considered as part of the normal free-busy lookup for that user. In addition, it ought be possible to present different periods of available time depending on which user is making the request.

日历用户通常有固定的时间段,在这段时间内,他们可以按计划使用日历,也可以始终不使用日历。例如,上班族通常只希望在正常的“办公时间”(例如,周一到周五,上午9点到下午5点)对同事自由露面。或者,大学教授可能只在规定的时间段内(例如,周四下午,学期期间下午2点到5点)对学生开放。理想情况下,用户应该能够通过他们的日历用户代理直接指定这些时间段,并自动将其视为该用户正常忙/闲查找的一部分。此外,应该可以根据发出请求的用户提供不同的可用时间段。

iCalendar [RFC5545] defines a "VFREEBUSY" component that can be used to represent fixed busy time periods, but it does not provide a way to specify a repeating period of available or unavailable time. Since repeating patterns are often the case, "VFREEBUSY" components are not sufficient to solve this problem.

iCalendar[RFC5545]定义了一个“VFREEBUSY”组件,可用于表示固定繁忙时间段,但它没有提供指定可用或不可用时间的重复周期的方法。由于重复模式经常出现,“VFREEBUSY”组件不足以解决此问题。

This specification defines a new type of iCalendar component that can be used to publish user availability.

本规范定义了一种新型iCalendar组件,可用于发布用户可用性。

CalDAV [RFC4791] provides a way for calendar users to access and manage calendar data and exchange this data via scheduling operations. As part of this, the CalDAV calendar-access [RFC4791] feature provides a CALDAV:free-busy-query REPORT that returns free-busy information for a calendar collection or hierarchy of calendar collections. Also, the CalDAV calendar-auto-schedule [RFC6638] feature allows free-busy information for a calendar user to be determined. Both of these operations involve examining user calendars for events that 'block time', with the blocked out periods being returned in a "VFREEBUSY" component.

CalDAV[RFC4791]为日历用户提供了一种访问和管理日历数据的方法,并通过调度操作交换这些数据。作为其中的一部分,CalDAV calendar access[RFC4791]功能提供了一个CalDAV:free-busy查询报告,该报告返回日历集合或日历集合层次结构的忙/闲信息。此外,CalDAV日历自动调度[RFC6638]功能允许确定日历用户的忙/闲信息。这两个操作都涉及到检查用户日历中是否存在“阻塞时间”的事件,阻塞的时间段将在“VFREEBUSY”组件中返回。

This specification extends the CalDAV calendar-access and CalDAV calendar-auto-schedule features to allow the new iCalendar availability components to be stored and manipulated and to allow free-busy lookups to use the information from any such components, if present.

本规范扩展了CalDAV日历访问和CalDAV日历自动调度功能,以允许存储和操作新的iCalendar可用性组件,并允许忙/闲查找使用任何此类组件(如果存在)的信息。

2. Conventions Used in This Document
2. 本文件中使用的公约

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”应按照[RFC2119]中的说明进行解释。

When XML element types in the namespaces "DAV:" and "urn:ietf:params:xml:ns:caldav" are referenced in this document outside of the context of an XML fragment, the string "DAV:" and "CALDAV:" will be prefixed to the element type names respectively.

当本文档在XML片段的上下文之外引用名称空间“DAV:”和“urn:ietf:params:XML:ns:caldav”中的XML元素类型时,字符串“DAV:”和“caldav:”将分别作为元素类型名称的前缀。

3. iCalendar Extensions
3. iCalendar扩展

This specification adds a new "VAVAILABILITY" calendar component to iCalendar. The "VAVAILABILITY" component is itself a container for new "AVAILABLE" subcomponents.

本规范向iCalendar添加了一个新的“可用性”日历组件。“可用性”组件本身就是新的“可用”子组件的容器。

The purpose of the "VAVAILABILITY" calendar component is to provide a grouping of available time information over a specific range of time. Within that, there are specific time ranges that are marked as available via a set of "AVAILABLE" calendar subcomponents. Together these can be used to specify available time that can repeat over set periods of time, and which can vary over time.

“可用性”日历组件的目的是提供特定时间范围内可用时间信息的分组。其中,有一些特定的时间范围通过一组“可用”日历子组件标记为可用。这些可以一起用于指定可在设定的时间段内重复的可用时间,以及随时间变化的可用时间。

An illustration of how "VAVAILABILITY" and "AVAILABLE" components work is shown below.

下面显示了“可用性”和“可用性”组件的工作原理。

                         Time Range
   <=========================================================>
        
                         Time Range
   <=========================================================>
        
      +-------------------------------------------------+
      |              VAVAILABILITY                      |
      +-------------------------------------------------+
         +------------+       +------------+
         | AVAILABLE  |       | AVAILABLE  |
         +------------+       +------------+
        
      +-------------------------------------------------+
      |              VAVAILABILITY                      |
      +-------------------------------------------------+
         +------------+       +------------+
         | AVAILABLE  |       | AVAILABLE  |
         +------------+       +------------+
        
      <->              <----->              <-----------> Busy Time
        
      <->              <----->              <-----------> Busy Time
        

The overall time range is shown at the top. A "VAVAILABILITY" component spans part of the range. The time range covered by the "VAVAILABILITY" component is considered to be busy, except for the ranges covered by the "AVAILABLE" components within the "VAVAILABILITY" component.

整体时间范围显示在顶部。“可用性”组件跨越范围的一部分。“可用性”组件涵盖的时间范围被视为繁忙,但“可用性”组件中“可用”组件涵盖的范围除外。

3.1. VAVAILABILITY Component
3.1. 有效成分

Component Name: VAVAILABILITY

组件名称:可用性

Purpose: Provide a grouping of component properties and subcomponents that describe the availability associated with a calendar user.

目的:提供一组组件属性和子组件,用于描述与日历用户关联的可用性。

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

格式定义:“可用性”日历组件由以下符号定义:

availabilityc = "BEGIN" ":" "VAVAILABILITY" CRLF availabilityprop *availablec "END" ":" "VAVAILABILITY" CRLF

availabilityc=“BEGIN”“:“可用性”CRLF availabilityprop*AvailabiliteC“结束”:“可用性”CRLF

   availabilityprop  = *(
                    ;
                    ; the following are REQUIRED
                    ; but MUST NOT occur more than once
                    ;
                    dtstamp / uid
                    ;
                    ; the following are OPTIONAL
                    ; but MUST NOT occur more than once
                    ;
                    busytype / class / created / description /
                    dtstart / last-mod / location / organizer /
                    priority /seq / summary / url /
                    ;
                    ; Either 'dtend' or 'duration' MAY appear
                    ; in an 'availableprop', but 'dtend' and
                    ; 'duration' MUST NOT occur in the same
                    ; 'availabilityprop'.
                    ; 'duration' MUST NOT be present if
                    ; 'dtstart' is not present
                    ;
                    dtend / duration /
                    ;
                    ; the following are OPTIONAL
                    ; and MAY occur more than once
                    ;
                    categories / comment / contact /
                    x-prop / iana-prop
                    ;
                    )
        
   availabilityprop  = *(
                    ;
                    ; the following are REQUIRED
                    ; but MUST NOT occur more than once
                    ;
                    dtstamp / uid
                    ;
                    ; the following are OPTIONAL
                    ; but MUST NOT occur more than once
                    ;
                    busytype / class / created / description /
                    dtstart / last-mod / location / organizer /
                    priority /seq / summary / url /
                    ;
                    ; Either 'dtend' or 'duration' MAY appear
                    ; in an 'availableprop', but 'dtend' and
                    ; 'duration' MUST NOT occur in the same
                    ; 'availabilityprop'.
                    ; 'duration' MUST NOT be present if
                    ; 'dtstart' is not present
                    ;
                    dtend / duration /
                    ;
                    ; the following are OPTIONAL
                    ; and MAY occur more than once
                    ;
                    categories / comment / contact /
                    x-prop / iana-prop
                    ;
                    )
        

availablec = "BEGIN" ":" "AVAILABLE" CRLF availableprop "END" ":" "AVAILABLE" CRLF

availablec=“BEGIN”“:”“AVAILABLE”CRLF availableprop“END”“:”“AVAILABLE”CRLF

   availableprop  = *(
                 ;
                 ; the following are REQUIRED
                 ; but MUST NOT occur more than once
                 ;
                 dtstamp / dtstart / uid /
                 ;
                 ; Either 'dtend' or 'duration' MAY appear in
                 ; an 'availableprop', but 'dtend' and
                 ; 'duration' MUST NOT occur in the same
                 ; 'availableprop'.
                 ;
                 dtend / duration /
                 ;
                 ; the following are OPTIONAL
                 ; but MUST NOT occur more than once
                 ;
                 created / description / last-mod /
                 location / recurid / rrule / summary /
                 ;
                 ; the following are OPTIONAL
                 ; and MAY occur more than once
                 ;
                 categories / comment / contact / exdate /
                 rdate / x-prop / iana-prop
                 ;
                 )
        
   availableprop  = *(
                 ;
                 ; the following are REQUIRED
                 ; but MUST NOT occur more than once
                 ;
                 dtstamp / dtstart / uid /
                 ;
                 ; Either 'dtend' or 'duration' MAY appear in
                 ; an 'availableprop', but 'dtend' and
                 ; 'duration' MUST NOT occur in the same
                 ; 'availableprop'.
                 ;
                 dtend / duration /
                 ;
                 ; the following are OPTIONAL
                 ; but MUST NOT occur more than once
                 ;
                 created / description / last-mod /
                 location / recurid / rrule / summary /
                 ;
                 ; the following are OPTIONAL
                 ; and MAY occur more than once
                 ;
                 categories / comment / contact / exdate /
                 rdate / x-prop / iana-prop
                 ;
                 )
        

Description: A "VAVAILABILITY" component indicates a period of time within which availability information is provided. A "VAVAILABILITY" component can specify a start time and an end time or duration. If "DTSTART" is not present, then the start time is unbounded. If "DTEND" or "DURATION" are not present, then the end time is unbounded. Within the specified time period, availability defaults to a free-busy type of "BUSY-UNAVAILABLE" (see Section 3.2), except for any time periods corresponding to "AVAILABLE" subcomponents.

说明:“可用性”组件表示提供可用性信息的时间段。“可用性”组件可以指定开始时间和结束时间或持续时间。如果“DTSTART”不存在,则开始时间是无限的。如果“DTEND”或“DURATION”不存在,则结束时间是无限的。在指定的时间段内,可用性默认为忙-忙类型的“忙-不可用”(见第3.2节),与“可用”子组件对应的任何时间段除外。

"AVAILABLE" subcomponents are used to indicate periods of free time within the time range of the enclosing "VAVAILABILITY" component. "AVAILABLE" subcomponents MAY include recurrence properties to specify recurring periods of time, which can be overridden using normal iCalendar recurrence behavior (i.e., use of the "RECURRENCE-ID" property).

“可用”子组件用于表示所附“可用性”组件时间范围内的空闲时间。“可用”子组件可能包括用于指定周期性时间段的周期性属性,可使用正常iCalendar周期性行为(即使用“recurrence-ID”属性)覆盖周期性时间段。

If specified, the "DTSTART" and "DTEND" properties in "VAVAILABILITY" components and "AVAILABLE" subcomponents MUST be "DATE-TIME" values specified as either the date with UTC time or the date with local time and a time zone reference.

如果指定,则“VaAvailability”组件和“AVAILABLE”子组件中的“DTSTART”和“DTEND”属性必须是“日期-时间”值,指定为UTC时间的日期或本地时间和时区参考的日期。

The iCalendar object containing the "VAVAILABILITY" component MUST contain appropriate "VTIMEZONE" components corresponding to each unique "TZID" parameter value used in any DATE-TIME properties in all components, unless [RFC7809] is in effect.

包含“VaAvailability”组件的iCalendar对象必须包含与所有组件中任何日期时间属性中使用的每个唯一“TZID”参数值相对应的适当“VTIMEZONE”组件,除非[RFC7809]有效。

When used to publish available time, the "ORGANIZER" property specifies the calendar user associated with the published available time.

用于发布可用时间时,“组织者”属性指定与发布的可用时间关联的日历用户。

If the "PRIORITY" property is specified in "VAVAILABILITY" components, it is used to determine how that component is combined with other "VAVAILABILITY" components. See Section 4.

如果在“可用性”组件中指定了“优先级”属性,则该属性用于确定该组件如何与其他“可用性”组件组合。见第4节。

Other calendar properties MAY be specified in "VAVAILABILITY" or "AVAILABLE" components and are considered attributes of the marked block of time. Their usage is application specific. For example, the "LOCATION" property might be used to indicate that a person is available in one location for part of the week and a different location for another part of the week (but see Section 9 for when it is appropriate to add additional data like this).

其他日历属性可能在“可用性”或“可用性”组件中指定,并被视为标记时间段的属性。它们的用法是特定于应用程序的。例如,“LOCATION”属性可用于指示一个人在一周的某个时间段在一个地点可用,而在另一周的某个时间段在另一个地点可用(但在适当的情况下添加类似的附加数据,请参见第9节)。

Example: The following is an example of a "VAVAILABILITY" calendar component used to represent the availability of a user, always available Monday through Friday, 9:00 am to 5:00 pm in the America/Montreal time zone:

示例:以下是用于表示用户可用性的“可用性”日历组件的示例,该组件在美国/蒙特利尔时区的周一至周五上午9:00至下午5:00始终可用:

   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF
   DTSTAMP:20111005T133225Z
   BEGIN:AVAILABLE
   UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
        
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF
   DTSTAMP:20111005T133225Z
   BEGIN:AVAILABLE
   UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
        

The following is an example of a "VAVAILABILITY" calendar component used to represent the availability of a user available Monday through Thursday, 9:00 am to 5:00 pm, at the main office, and Friday, 9:00 am to 12:00 pm, in the branch office in the America/Montreal time zone between October 2nd and December 2nd 2011:

以下是一个“可用性”日历组件的示例,用于表示2011年10月2日至12月2日期间,在美国/蒙特利尔时区的分支办公室,周一至周四上午9:00至下午5:00,在主办公室,以及周五上午9:00至下午12:00,用户的可用性:

   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:84D0F948-7FC6-4C1D-BBF3-BA9827B424B5
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   DTEND;TZID=America/Montreal:20111202T000000
   BEGIN:AVAILABLE
   UID:7B33093A-7F98-4EED-B381-A5652530F04D
   SUMMARY:Monday to Thursday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH
   LOCATION:Main Office
   END:AVAILABLE
   BEGIN:AVAILABLE
   UID:DF39DC9E-D8C3-492F-9101-0434E8FC1896
   SUMMARY:Friday from 9:00 to 12:00
   DTSTART;TZID=America/Montreal:20111006T090000
   DTEND;TZID=America/Montreal:20111006T120000
   RRULE:FREQ=WEEKLY
   LOCATION:Branch Office
   END:AVAILABLE
   END:VAVAILABILITY
        
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:84D0F948-7FC6-4C1D-BBF3-BA9827B424B5
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   DTEND;TZID=America/Montreal:20111202T000000
   BEGIN:AVAILABLE
   UID:7B33093A-7F98-4EED-B381-A5652530F04D
   SUMMARY:Monday to Thursday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH
   LOCATION:Main Office
   END:AVAILABLE
   BEGIN:AVAILABLE
   UID:DF39DC9E-D8C3-492F-9101-0434E8FC1896
   SUMMARY:Friday from 9:00 to 12:00
   DTSTART;TZID=America/Montreal:20111006T090000
   DTEND;TZID=America/Montreal:20111006T120000
   RRULE:FREQ=WEEKLY
   LOCATION:Branch Office
   END:AVAILABLE
   END:VAVAILABILITY
        

The following is an example of three "VAVAILABILITY" calendar components used to represent the availability of a traveling worker: Monday through Friday, 9:00 am to 5:00 pm each day. However, for three weeks the calendar user is working in Montreal, then one week in Denver, then back to Montreal. Note that each overall period is covered by separate "VAVAILABILITY" components. The last of these has no DTEND so it continues on "forever". This example shows one way "blocks" of available time can be represented. See Section 4 for another approach using priorities.

以下是三个“可用性”日历组件的示例,用于表示出差员工的可用性:周一到周五,每天上午9:00到下午5:00。然而,日历用户在蒙特利尔工作三周,然后在丹佛工作一周,然后返回蒙特利尔。请注意,每个总期间由单独的“可用性”部分涵盖。最后一个没有DTEND,因此它将继续“永远”。此示例显示了可用时间的一种表示方法。有关使用优先级的另一种方法,请参见第4节。

   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:BE082249-7BDD-4FE0-BDBA-DE6598C32FC9
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   DTEND;TZID=America/Montreal:20111023T030000
   BEGIN:AVAILABLE
   UID:54602321-CEDB-4620-9099-757583263981
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:A1FF55E3-555C-433A-8548-BF4864B5621E
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Denver:20111023T000000
   DTEND;TZID=America/Denver:20111030T000000
   BEGIN:AVAILABLE
   UID:57DD4AAF-3835-46B5-8A39-B3B253157F01
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Denver:20111023T090000
   DTEND;TZID=America/Denver:20111023T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Denver
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:1852F9E1-E0AA-4572-B4C4-ED1680A4DA40
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111030T030000
   BEGIN:AVAILABLE
   UID:D27C421F-16C2-4ECB-8352-C45CA352C72A
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111030T090000
   DTEND;TZID=America/Montreal:20111030T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
        
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:BE082249-7BDD-4FE0-BDBA-DE6598C32FC9
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   DTEND;TZID=America/Montreal:20111023T030000
   BEGIN:AVAILABLE
   UID:54602321-CEDB-4620-9099-757583263981
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:A1FF55E3-555C-433A-8548-BF4864B5621E
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Denver:20111023T000000
   DTEND;TZID=America/Denver:20111030T000000
   BEGIN:AVAILABLE
   UID:57DD4AAF-3835-46B5-8A39-B3B253157F01
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Denver:20111023T090000
   DTEND;TZID=America/Denver:20111023T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Denver
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:1852F9E1-E0AA-4572-B4C4-ED1680A4DA40
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111030T030000
   BEGIN:AVAILABLE
   UID:D27C421F-16C2-4ECB-8352-C45CA352C72A
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111030T090000
   DTEND;TZID=America/Montreal:20111030T170000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
        
3.2. Busy Time Type
3.2. 繁忙时间类型

Property Name: BUSYTYPE

属性名称:BUSYTYPE

Purpose: This property specifies the default busy time type.

用途:此属性指定默认的繁忙时间类型。

Value Type: TEXT

值类型:文本

Property Parameters: IANA and nonstandard property parameters can be specified on this property.

属性参数:可以在此属性上指定IANA和非标准属性参数。

Conformance: This property can be specified within "VAVAILABILITY" calendar components.

一致性:此属性可以在“VAVAILABILITY”日历组件中指定。

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

格式定义:此属性由以下符号定义:

busytype = "BUSYTYPE" busytypeparam ":" busytypevalue CRLF

busytype=“busytype”busytypeparam:“busytypevalue CRLF”

   busytypeparam = *(";" other-param)
        
   busytypeparam = *(";" other-param)
        
   busytypevalue = "BUSY" / "BUSY-UNAVAILABLE" /
                   "BUSY-TENTATIVE" / iana-token / x-name
                  ; Default is "BUSY-UNAVAILABLE".
        
   busytypevalue = "BUSY" / "BUSY-UNAVAILABLE" /
                   "BUSY-TENTATIVE" / iana-token / x-name
                  ; Default is "BUSY-UNAVAILABLE".
        

Description: This property is used to specify the default busy time type. The values correspond to those used by the "FBTYPE" parameter used on a "FREEBUSY" property, with the exception that the "FREE" value is not used in this property. If not specified on a component that allows this property, the default is "BUSY-UNAVAILABLE".

描述:此属性用于指定默认繁忙时间类型。这些值与“FREEBUSY”属性上使用的“FBTYPE”参数所使用的值相对应,但此属性中未使用“FREE”值除外。如果未在允许此属性的组件上指定,则默认为“忙-不可用”。

Example: The following is an example of this property:

示例:以下是此属性的示例:

BUSYTYPE:BUSY

忙碌类型:忙碌

4. Combining VAVAILABILITY Components
4. 组合有效成分

The "VAVAILABILITY" component allows a calendar user to describe their availability over extended periods of time through the use of recurrence patterns. This availability might be relatively constant from year to year.

“可用性”组件允许日历用户通过使用重复模式描述其在较长时间内的可用性。这种可用性每年可能相对稳定。

However, there is usually some degree of irregularity, as people take vacations or perhaps spend a few weeks at a different office. For that period of time there is a need to redefine their availability. Rather than modify their existing availability, the "PRIORITY" property allows new "VAVAILABILITY" components to override others of

然而,由于人们休假或可能在不同的办公室呆上几周,通常会出现某种程度的不正常现象。在这段时间内,需要重新定义其可用性。“优先级”属性允许新的“可用性”组件覆盖其他组件,而不是修改它们现有的可用性

lower ordinal priority. Note that iCalendar [RFC5545] defines the "PRIORITY" property such that a value of 0 is undefined, 1 is the highest priority, and 9 is the lowest.

顺序优先级较低。请注意,iCalendar[RFC5545]定义了“优先级”属性,因此未定义值0,1是最高优先级,9是最低优先级。

When combining "VAVAILABILITY" components, an absence of a "PRIORITY" property or a value of 0 implies the lowest level of priority. When two or more VAVAILABILITY components overlap, and they have the same PRIORITY value, the overlapping busy time type is determined by the following order: BUSY > BUSY-UNAVAILABLE > BUSY-TENTATIVE. That is, if one component has a BUSYTYPE set to BUSY and the other has BUSYTYPE set to BUSY-UNAVAILABLE, then the effective busy time type over the time range that they overlap would be BUSY. It is up to the creator of such components to ensure that combining them produces a consistent and expected result.

组合“可用性”组件时,如果没有“优先级”属性或值为0,则表示优先级最低。当两个或多个可用性组件重叠且它们具有相同的优先级值时,重叠的繁忙时间类型由以下顺序确定:忙碌>忙碌-不可用>忙碌-暂时。也就是说,如果一个组件的BUSYTYPE设置为BUSY,而另一个组件的BUSYTYPE设置为BUSY-UNAVAILABLE,则它们重叠的时间范围内的有效繁忙时间类型将为BUSY。这取决于这些组件的创建者,以确保将它们组合在一起产生一致的预期结果。

To calculate the available time, order the intersecting "VAVAILABILITY" components by priority (the lowest to highest "PRIORITY" values are 0, 9, 8, 7, 6, 5, 4, 3, 2, 1).

要计算可用时间,请按优先级排列相交的“可用性”组件(从最低到最高的“优先级”值为0、9、8、7、6、5、4、3、2、1)。

Step through the resulting list of "VAVAILABILITY" components. For each, the time range covered by the "VAVAILABILITY" component is set to busy and then portions of it defined by the "AVAILABLE" components in the "VAVAILABILITY" component are set to free.

逐步浏览“可用性”组件的结果列表。对于每种情况,“可用性”组件涵盖的时间范围都设置为繁忙,然后由“可用性”组件中的“可用”组件定义的部分时间范围被设置为空闲。

Note that, if any "VAVAILABILITY" component completely covers the date range of interest, then any lower priority "VAVAILABILITY" components can be ignored.

请注意,如果任何“可用性”组件完全涵盖了感兴趣的日期范围,则可以忽略任何优先级较低的“可用性”组件。

Typically, a calendar user's "default" availability (e.g., business hours of Monday through Friday, 9:00 am to 5:00 pm) would use the lowest level of priority: zero. Any overrides to the "default" would use higher levels as needed. To avoid having to keep readjusting the "PRIORITY" property value when an override has to be "inserted" between two existing components, priority values SHOULD be "spaced out" over the full range of values. The table below illustrates this via an example. The first row shows the priority range from low to high, the second row shows the corresponding "PRIORITY" property value, and the third row shows which "VAVAILABILITY" component has that priority. The "default" availability is created with priority zero (shown as {a} in the table), then the first override created with priority 5 (shown as {b} in the table), a subsequent availability can be inserted between the two by using priority 7 (shown as {c} in the table), and another, taking precedence over all existing ones, with priority 3 (shown as {d} in the table). As seen in the table, additional "slots" are open for more "VAVAILABILITY" components to be added with other priorities if needed.

通常,日历用户的“默认”可用性(例如,周一到周五的工作时间,上午9:00到下午5:00)将使用最低优先级:零。对“默认”的任何重写都将根据需要使用更高的级别。为了避免在必须在两个现有组件之间“插入”替代时必须不断重新调整“优先级”属性值,优先级值应在整个值范围内“隔开”。下表通过一个例子说明了这一点。第一行显示从低到高的优先级范围,第二行显示相应的“优先级”属性值,第三行显示哪个“可用性”组件具有该优先级。“默认”可用性是以优先级0(在表中显示为{a})创建的,然后是以优先级5(在表中显示为{b})创建的第一个覆盖,随后的可用性可以通过使用优先级7(在表中显示为{c})插入到两者之间,另一个优先于所有现有可用性,优先级为3(表中显示为{d})。如表中所示,额外的“插槽”为更多的“可用性”组件打开,以便在需要时添加其他优先级。

            +-----+----+----+-----+----+-----+----+-----+----+------+
            | Low |    |    |     |    |     |    |     |    | High |
            +-----+----+----+-----+----+-----+----+-----+----+------+
            |  0  | 9  | 8  |  7  | 6  |  5  | 4  |  3  | 2  |  1   |
            +-----+----+----+-----+----+-----+----+-----+----+------+
            | {a} |    |    | {c} |    | {b} |    | {d} |    |      |
            +-----+----+----+-----+----+-----+----+-----+----+------+
        
            +-----+----+----+-----+----+-----+----+-----+----+------+
            | Low |    |    |     |    |     |    |     |    | High |
            +-----+----+----+-----+----+-----+----+-----+----+------+
            |  0  | 9  | 8  |  7  | 6  |  5  | 4  |  3  | 2  |  1   |
            +-----+----+----+-----+----+-----+----+-----+----+------+
            | {a} |    |    | {c} |    | {b} |    | {d} |    |      |
            +-----+----+----+-----+----+-----+----+-----+----+------+
        
5. Calculating Free-Busy Time
5. 计算忙/闲时间

This section describes how free-busy time information for a calendar user is calculated in the presence of "VAVAILABILITY" calendar components.

本节介绍如何在存在“可用性”日历组件的情况下计算日历用户的忙/闲时间信息。

An iCalendar "VFREEBUSY" component is used to convey "rolled-up" free-busy time information for a calendar user. This can be generated as the result of an iTIP [RFC5546] free-busy request or through some other mechanism (e.g., a CalDAV calendar-access CALDAV:free-busy-query REPORT).

iCalendar“VFREEBUSY”组件用于为日历用户传递“汇总”忙/闲时间信息。这可以作为iTIP[RFC5546]忙/闲请求的结果或通过某些其他机制(例如,CalDAV日历访问CalDAV:忙/闲查询报告)生成。

When one or more "VAVAILABILITY" components are present and intersect the time range for the free-busy request, first the available time is calculated, as outlined in Section 4. Once that is done, regular "VEVENT" and "VFREEBUSY" components can be "overlaid" in the usual way to block out time.

当存在一个或多个“可用性”组件并与忙/闲请求的时间范围相交时,首先计算可用时间,如第4节所述。一旦完成,常规的“VEVENT”和“VFREEBUSY”组件就可以以通常的方式“覆盖”以屏蔽时间。

An example procedure for this is as follows:

这方面的示例程序如下所示:

1. Initially mark the entire period of the free-busy request as free.

1. 最初将忙/闲请求的整个时间段标记为空闲。

2. For each "VAVAILABILITY" component ordered by PRIORITY (lowest to highest):

2. 对于按优先级排序的每个“可用性”组件(从低到高):

A. Determine if the "VAVAILABILITY" intersects the time range of the free-busy request. If not, ignore it.

A.确定“可用性”是否与忙/闲请求的时间范围相交。如果没有,忽略它。

B. Determine if the "VAVAILABILITY" is completely overridden by a higher priority component. If so, ignore it.

B.确定“可用性”是否被更高优先级的组件完全覆盖。如果是这样,忽略它。

C. For the time period covered by the "VAVAILABILITY" component, mark time in the free-busy request result set as busy, using the busy time type derived from the "BUSYTYPE" property in the "VAVAILABILITY" component.

C.对于“VAVAILABILITY”组件覆盖的时间段,使用从“VAVAILABILITY”组件中的“BUSYTYPE”属性派生的繁忙时间类型,将忙/闲请求结果集中的时间标记为繁忙。

D. Append the "VAVAILABILITY" component to a list of components for further processing in step 3, if it has not been ignored.

D.将“可用性”组件附加到组件列表中,以便在步骤3中进行进一步处理(如果未忽略)。

3. For each "VAVAILABILITY" component in the list resulting from step 2, in order from the first item to the last item:

3. 对于步骤2产生的列表中的每个“可用性”组件,按照从第一项到最后一项的顺序:

A. For each "AVAILABLE" component in the "VAVAILABILITY" component:

A.对于“可用性”组件中的每个“可用”组件:

i. Expand all recurring instances, taking into account overridden instances, ignoring instances or parts of instances that fall outside of the free-busy request time range or the time period specified by the "VAVAILABILITY" component.

i. 展开所有重复实例,考虑被覆盖的实例,忽略在忙/闲请求时间范围或“可用性”组件指定的时间段之外的实例或部分实例。

ii. For each instance, mark the corresponding time in the free-busy request result set as free.

二,。对于每个实例,将忙/闲请求结果集中的相应时间标记为空闲。

4. For each "VEVENT" or "VFREEBUSY" component, apply normal free-busy processing within the free-busy request time range.

4. 对于每个“VEVENT”或“VFREEBUSY”组件,在忙-闲请求时间范围内应用正常忙-闲处理。

5.1. Examples
5.1. 例子

In the examples below, a table is used to represent time slots for the period of a free-busy request. Each time slot is two hours long. The column header represents the hours from midnight local time. Each row below the column headers represents a step in the free-busy result set determination, following the procedure outlined above.

在下面的示例中,表格用于表示忙/闲请求期间的时隙。每个时段有两个小时长。列标题表示从当地时间午夜开始的小时数。列标题下方的每一行表示按照上述步骤确定忙/闲结果集中的一个步骤。

Each cell in the rows below the column header contains a single character that represents the free-busy type for the corresponding time period at the end of the process step represented by the row. The characters in the row are:

列标题下的行中的每个单元格都包含一个字符,该字符表示该行表示的流程步骤结束时相应时间段的忙/闲类型。行中的字符为:

F Represents "FREE" time in that slot.

F表示该插槽中的“空闲”时间。

B Represents "BUSY" time in that slot.

B表示该插槽中的“繁忙”时间。

U Represents "BUSY-UNAVAILABLE" time in that slot.

U表示该插槽中的“忙-不可用”时间。

T Represents "BUSY-TENTATIVE" time in that slot.

T表示该插槽中的“忙-暂定”时间。

I Represents data to be ignored in that slot (as per step 2.B above).

I表示该插槽中要忽略的数据(根据上面的步骤2.B)。

5.1.1. Simple Example
5.1.1. 简单例子

Appendix A shows the user's calendar. This includes one "VAVAILABILITY" component giving available time within the requested time range of 8:00 am to 6:00 pm, together with one "VEVENT" component representing a two hour meeting starting at 12:00 pm.

附录A显示了用户的日历。这包括一个“可用性”组件,提供所需时间范围(上午8:00至下午6:00)内的可用时间,以及一个“VEVENT”组件,表示从下午12:00开始的两小时会议。

A free-busy request for Monday, 6th November 2011, midnight to midnight in the America/Montreal time zone would be calculated as follows using the steps described above.

2011年11月6日星期一美国/蒙特利尔时区午夜至午夜的忙/闲请求将使用上述步骤计算如下。

   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | Step | 0  | 2  | 4  | 6  | 8  | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | 1.   | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  |
   | 2.   | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  |
   | 3.   | U  | U  | U  | U  | F  | F  | F  | F  | F  | U  | U  | U  |
   | 4.   | U  | U  | U  | U  | F  | F  | B  | F  | F  | U  | U  | U  |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
        
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | Step | 0  | 2  | 4  | 6  | 8  | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | 1.   | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  |
   | 2.   | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  |
   | 3.   | U  | U  | U  | U  | F  | F  | F  | F  | F  | U  | U  | U  |
   | 4.   | U  | U  | U  | U  | F  | F  | B  | F  | F  | U  | U  | U  |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
        
5.1.2. Further Example
5.1.2. 进一步的例子

Appendix B shows another way to represent the availability of the traveling worker shown above. Here we represent their base availability of Monday through Friday, 8:00 am to 6:00 pm each day with a "VAVAILABILITY" with default "PRIORITY" (there is no "DTEND" property so that this availability is unbounded). For the week the calendar user is working in Denver (October 23rd through October 30th), we represent their availability with a "VAVAILABILITY" component with priority 1, which overrides the base availability. There is also a two hour meeting starting at 12:00 pm (in the America/Denver time zone).

附录B显示了另一种表示上述旅行工人可用性的方式。在这里,我们表示他们周一到周五的基本可用性,每天上午8:00到下午6:00,带有默认“优先级”的“可用性”(没有“DTEND”属性,因此此可用性是无限的)。对于日历用户在丹佛工作的一周(10月23日至10月30日),我们使用优先级为1的“可用性”组件表示其可用性,该组件覆盖基本可用性。下午12:00(美国/丹佛时区)还有一个两小时的会议。

A free-busy request for Monday, 24th October 2011, midnight to midnight in the America/Montreal time zone, would be calculated as follows using the steps described above. Note that there is a two hour offset in the in the available time, compared to the previous example, due to the two hour difference between the time zone of the free-busy request and the time zone of the user's availability and meeting. "2.P0" shows the base availability, and "2.P1" shows the higher priority availability. "3.P1" only shows the higher priority availability contributing to the overall free-busy since the default availability is ignored (as per step 2.B described above).

2011年10月24日星期一美国/蒙特利尔时区午夜至午夜的忙/闲请求将使用上述步骤计算如下。请注意,与上一个示例相比,由于忙/闲请求的时区与用户的可用性和会议的时区之间存在两个小时的差异,因此可用时间中存在两个小时的偏移。“2.P0”表示基本可用性,“2.P1”表示更高优先级的可用性。“3.P1”仅显示了导致整体忙/闲的更高优先级可用性,因为默认可用性被忽略(根据上述步骤2.B)。

   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | Step | 0  | 2  | 4  | 6  | 8  | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | 1.   | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  |
   | 2.P0 | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  |
   | 2.P1 | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  |
   | 3.P1 | U  | U  | U  | U  | U  | F  | F  | F  | F  | F  | U  | U  |
   | 4.   | U  | U  | U  | U  | U  | F  | F  | B  | F  | F  | U  | U  |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
        
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | Step | 0  | 2  | 4  | 6  | 8  | 10 | 12 | 14 | 16 | 18 | 20 | 22 |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
   | 1.   | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  | F  |
   | 2.P0 | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  | I  |
   | 2.P1 | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  | U  |
   | 3.P1 | U  | U  | U  | U  | U  | F  | F  | F  | F  | F  | U  | U  |
   | 4.   | U  | U  | U  | U  | U  | F  | F  | B  | F  | F  | U  | U  |
   +------+----+----+----+----+----+----+----+----+----+----+----+----+
        
6. Use with iTIP
6. 与iTIP一起使用

This specification does not define how "VAVAILABILITY" components are used in scheduling messages sent using the iTIP [RFC5546] protocol. It is expected that future specifications will define how iTIP scheduling can make use of "VAVAILABILITY" components.

本规范未定义如何在调度使用iTIP[RFC5546]协议发送的消息时使用“可用性”组件。预计未来的规范将定义iTIP调度如何利用“可用性”组件。

7. CalDAV Extensions
7. CalDAV扩展
7.1. CalDAV Requirements Overview
7.1. CalDAV需求概述

This section lists what functionality is required of a CalDAV server, which supports "VAVAILABILITY" components in stored calendar data. A server:

本节列出了CalDAV服务器所需的功能,该服务器支持存储的日历数据中的“可用性”组件。服务器:

o MUST advertise support for "VAVAILABILITY" components in CALDAV:supported-calendar-component-set properties on calendars that allow storing of such components;

o 必须在CALDAV中公布对“可用性”组件的支持:日历上支持的日历组件集属性允许存储此类组件;

o MUST support CALDAV:free-busy-query REPORTs that aggregate the information in any "VAVAILABILITY" components in the calendar collections targeted by the request;

o 必须支持CALDAV:free-busy查询报告,该报告聚合请求所针对的日历集合中任何“可用性”组件中的信息;

o MUST support "VAVAILABILITY" components stored in a CALDAV:calendar-availability Web Distributed Authoring and Versioning (WebDAV) property on a CalDAV scheduling Inbox collection, if the CalDAV calendar-auto-schedule feature is supported;

o 如果支持CALDAV日历自动日程安排功能,则必须支持CALDAV日程安排收件箱集合上CALDAV:calendar availability Web分布式创作和版本控制(WebDAV)属性中存储的“可用性”组件;

o MUST support iTIP [RFC5546] free-busy requests that aggregate the information in any "VAVAILABILITY" components in calendar collections that contribute to free-busy, or in any "VAVAILABILITY" components stored in the CALDAV:calendar-availability property on the CalDAV scheduling Inbox collection of the calendar user targeted by the iTIP free-busy request, if the CalDAV calendar-auto-schedule feature is available.

o 必须支持iTIP[RFC5546]忙/闲请求,该请求将信息聚合到日历集合中任何有助于忙/闲的“可用性”组件中,或任何“可用性”组件中如果CALDAV日历自动计划功能可用,则存储在iTIP忙/闲请求所针对的日历用户的CALDAV计划收件箱集合中CALDAV:calendar availability属性中的组件。

Processing of "VAVAILABILITY" components MUST conform to all the requirements CalDAV imposes on calendar object resources (see Section 4.1 of [RFC4791]).

“可用性”组件的处理必须符合CalDAV对日历对象资源的所有要求(见[RFC4791]第4.1节)。

7.2. New Features in CalDAV
7.2. CalDAV中的新特性
7.2.1. Calendar Availability Support
7.2.1. 日历可用性支持

A server supporting the features described in this document MUST include "calendar-availability" as a field in the DAV response header from an OPTIONS request. A value of "calendar-availability" in the DAV response header indicates to clients that the server supports all the requirements specified in this document.

支持本文档所述功能的服务器必须在选项请求的DAV响应标头中包含“日历可用性”字段。DAV响应标头中的“日历可用性”值向客户端表示服务器支持本文档中指定的所有要求。

7.2.1.1. Example: Using OPTIONS for the Discovery of Calendar Availability Support

7.2.1.1. 示例:使用选项查找日历可用性支持

   >> Request <<
        
   >> Request <<
        
   OPTIONS /home/bernard/calendars/ HTTP/1.1
   Host: cal.example.com
        
   OPTIONS /home/bernard/calendars/ HTTP/1.1
   Host: cal.example.com
        
   >> Response <<
        
   >> Response <<
        

HTTP/1.1 200 OK Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE Allow: PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL DAV: 1, 2, 3, access-control, calendar-access, calendar-availability Date: Fri, 11 Nov 2005 09:32:12 GMT Content-Length: 0

HTTP/1.1 200 OK Allow:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、COPY、MOVE Allow:PROPFIND、PROPPATCH、LOCK、UNLOCK、REPORT、ACL DAV:1、2、3、访问控制、日历访问、日历可用日期:2005年11月11日星期五09:32:12 GMT内容长度:0

In this example, the OPTIONS method returns the value "calendar-availability" in the DAV response header to indicate that the collection "/home/bernard/calendars/" supports the new features defined in this specification.

在本例中,OPTIONS方法在DAV响应头中返回值“calendar availability”,以指示集合“/home/bernard/calendars/”支持本规范中定义的新功能。

7.2.2. CalDAV Time Range Queries
7.2.2. CalDAV时间范围查询

Section 9.9 of [RFC4791] describes how to specify time ranges to limit the set of calendar components returned by the server. This specification extends [RFC4791] to describe how to apply time range filtering to "VAVAILABILITY" components.

[RFC4791]的第9.9节描述了如何指定时间范围以限制服务器返回的日历组件集。本规范扩展了[RFC4791],以描述如何将时间范围过滤应用于“可用性”组件。

A "VAVAILABILITY" component is said to overlap a given time range if the condition for the corresponding component state specified in the table below is satisfied. The conditions depend on the presence of the "DTSTART", "DTEND", and "DURATION" properties in the "VAVAILABILITY" component. Note that, as specified above, the "DTEND" value MUST be a "DATE-TIME" value equal to or after the "DTSTART" value, if specified.

如果满足下表中规定的相应组件状态条件,则称“可用性”组件与给定时间范围重叠。这些条件取决于“可用性”组件中是否存在“DTSTART”、“DTEND”和“DURATION”属性。请注意,如上所述,“DTEND”值必须是等于或晚于“DTSTART”值的“日期-时间”值(如果指定)。

       +------------------------------------------------------------+
       | VAVAILABILITY has the DTSTART property?                    |
       |   +--------------------------------------------------------+
       |   | VAVAILABILITY has the DTEND property?                  |
       |   |   +----------------------------------------------------+
       |   |   | VAVAILABILITY has the DURATION property?           |
       |   |   |   +------------------------------------------------+
       |   |   |   | Condition to evaluate                          |
       +---+---+---+------------------------------------------------+
       | Y | Y | N | (start < DTEND  AND  end > DTSTART)            |
       +---+---+---+------------------------------------------------+
       | Y | N | Y | (start < DTSTART+DURATION  AND  end > DTSTART) |
       +---+---+---+------------------------------------------------+
       | Y | N | N | (end > DTSTART)                                |
       +---+---+---+------------------------------------------------+
       | N | Y | N | (start < DTEND)                                |
       +---+---+---+------------------------------------------------+
       | N | N | * | TRUE                                           |
       +---+---+---+------------------------------------------------+
        
       +------------------------------------------------------------+
       | VAVAILABILITY has the DTSTART property?                    |
       |   +--------------------------------------------------------+
       |   | VAVAILABILITY has the DTEND property?                  |
       |   |   +----------------------------------------------------+
       |   |   | VAVAILABILITY has the DURATION property?           |
       |   |   |   +------------------------------------------------+
       |   |   |   | Condition to evaluate                          |
       +---+---+---+------------------------------------------------+
       | Y | Y | N | (start < DTEND  AND  end > DTSTART)            |
       +---+---+---+------------------------------------------------+
       | Y | N | Y | (start < DTSTART+DURATION  AND  end > DTSTART) |
       +---+---+---+------------------------------------------------+
       | Y | N | N | (end > DTSTART)                                |
       +---+---+---+------------------------------------------------+
       | N | Y | N | (start < DTEND)                                |
       +---+---+---+------------------------------------------------+
       | N | N | * | TRUE                                           |
       +---+---+---+------------------------------------------------+
        
7.2.3. CALDAV:free-busy-query REPORT
7.2.3. CALDAV:忙/闲查询报告

A CALDAV:free-busy-query REPORT can be executed on a calendar collection that contains iCalendar "VAVAILABILITY" components. When that occurs, the server MUST aggregate the information in any "VAVAILABILITY" components when generating the free-busy response, as described in Section 5.

CALDAV:free-busy查询报告可以在包含iCalendar“VAVAILABILITY”组件的日历集合上执行。出现这种情况时,服务器必须在生成忙/闲响应时聚合任何“可用性”组件中的信息,如第5节所述。

7.2.4. CALDAV:calendar-availability Property
7.2.4. CALDAV:日历可用性属性

Name: calendar-availability

名称:日历可用性

   Namespace:  urn:ietf:params:xml:ns:caldav
        
   Namespace:  urn:ietf:params:xml:ns:caldav
        

Purpose: Defines a "VAVAILABILITY" component that will be used in calculating free-busy time when an iTIP free-busy request is targeted at the calendar user who owns the Inbox.

目的:定义“可用性”组件,当iTIP忙/闲请求针对拥有收件箱的日历用户时,该组件将用于计算忙/闲时间。

Conformance: This property MAY be protected and SHOULD NOT be returned by a PROPFIND DAV:allprop request. Support for this property is REQUIRED. The value of this property MUST be a valid iCalendar object containing only one "VAVAILABILITY" component, and optionally, "VTIMEZONE" components - other iCalendar components MUST NOT be present. "VTIMEZONE" components SHOULD NOT be present if [RFC7809] is in effect. For more complex availability scenarios, clients can store multiple "VAVAILABILITY" components in the calendar user's calendar collections.

一致性:此属性可能受到保护,不应由PROPFIND DAV:allprop请求返回。需要对此属性的支持。此属性的值必须是有效的iCalendar对象,该对象仅包含一个“VAAvailability”组件,并且可以选择包含“VTIMEZONE”组件-其他iCalendar组件不得存在。如果[RFC7809]有效,“VTIMEZONE”组件不应出现。对于更复杂的可用性场景,客户端可以在日历用户的日历集合中存储多个“可用性”组件。

Description: This property allows a user to specify their availability by including an "VAVAILABILITY" component in the value of this property. If present, the server MUST use this "VAVAILABILITY" component when determining free-busy information as part of an iTIP free-busy request being handled by the server.

描述:此属性允许用户通过在此属性的值中包含“可用性”组件来指定其可用性。如果存在,服务器在确定忙/闲信息作为服务器正在处理的iTIP忙/闲请求的一部分时,必须使用此“可用性”组件。

Definition:

定义:

<!ELEMENT calendar-availability (#PCDATA) > ; Data value MUST be an iCalendar object containing ; "VAVAILABILITY" or "VTIMEZONE" components.

<!元素日历可用性(#PCDATA)>;数据值必须是包含以下内容的iCalendar对象:;“可用性”或“VTIMEZONE”组件。

Example:

例子:

   <C:calendar-availability xmlns:D="DAV:"
   xmlns:C="urn:ietf:params:xml:ns:caldav"
   >BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VAVAILABILITY
   UID:9BADC1F6-0FC4-44BF-AC3D-993BEC8C962A
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:6C9F69C3-BDA8-424E-B2CB-7012E796DDF7
   SUMMARY:Monday to Friday from 9:00 to 18:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
   </C:calendar-availability>
        
   <C:calendar-availability xmlns:D="DAV:"
   xmlns:C="urn:ietf:params:xml:ns:caldav"
   >BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VAVAILABILITY
   UID:9BADC1F6-0FC4-44BF-AC3D-993BEC8C962A
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:6C9F69C3-BDA8-424E-B2CB-7012E796DDF7
   SUMMARY:Monday to Friday from 9:00 to 18:00
   DTSTART;TZID=America/Montreal:20111002T090000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
   </C:calendar-availability>
        
7.2.5. iTIP Free-Busy Requests
7.2.5. iTIP忙/闲请求

The CalDAV calendar-auto-schedule feature (see Section 5 of [RFC6638]) includes a mechanism for free-busy information to be requested via the CalDAV protocol. Any "VAVAILABILITY" components in any calendar collections targeted during such a request MUST be included as part of the calculation of the overall free-busy information. In addition, the "VAVAILABILITY" component specified in the CALDAV:calendar-availability property on the owner's Inbox MUST also be included in the free-busy calculation. Processing of all such "VAVAILABILITY" components is done as per Section 5.

CalDAV日历自动调度功能(见[RFC6638]第5节)包括一种通过CalDAV协议请求忙/闲信息的机制。在此类请求期间针对的任何日历集合中的任何“可用性”组件都必须作为整体忙/闲信息计算的一部分包括在内。此外,在所有者收件箱的CALDAV:calendar availability属性中指定的“可用性”组件也必须包含在忙/闲计算中。所有此类“可用性”组件的处理按照第5节进行。

8. Security Considerations
8. 安全考虑

Calculation of availability information, particularly with multiple overlapping time ranges, can be complex, and CalDAV servers MUST limit the complexity of such data stored by a client.

可用性信息的计算,特别是在多个重叠时间范围内的可用性信息的计算,可能会很复杂,CalDAV服务器必须限制客户端存储的此类数据的复杂性。

An attacker able to "inject" availability information into a calendar user's calendar data could ensure that the user never appears free for meetings or appears free at inappropriate times. Calendar systems MUST ensure that availability information for a calendar user can only be modified by authorized users.

能够将可用性信息“注入”到日历用户的日历数据中的攻击者可确保该用户在会议时从不显得空闲或在不适当的时间显得空闲。日历系统必须确保日历用户的可用性信息只能由授权用户修改。

Security considerations in [RFC5545], [RFC5546], [RFC4791], [RFC6638], and [RFC7809] MUST also be adhered to.

还必须遵守[RFC5545]、[RFC5546]、[RFC4791]、[RFC6638]和[RFC7809]中的安全注意事项。

9. Privacy Considerations
9. 隐私考虑

Free-busy and availability information can be used by attackers to infer the whereabouts or overall level of "activity" of the corresponding calendar user. Any calendar system that allows a user to expose their free-busy and availability information MUST limit access to that information to only authorized users.

攻击者可以利用忙/闲和可用性信息推断相应日历用户的行踪或总体“活动”级别。任何允许用户公开其忙/闲和可用性信息的日历系统都必须限制仅授权用户访问该信息。

When "VAVAILABILITY" components are sent to or shared with other calendar users, care has to be taken not to expose more information than is needed by each recipient. For example, a business owner will likely not want their customers to know where they might be or what they might be doing, but family members might be willing to expose such information to each other. Thus, calendaring systems allowing "VAVAILABILITY" components to be sent or shared to other calendar users MUST provide a way for nonessential properties to be removed (e.g., "SUMMARY", "LOCATION", and "DESCRIPTION").

当“VAVAILABILITY”组件发送给其他日历用户或与其他日历用户共享时,必须注意不要暴露超出每个收件人需要的更多信息。例如,企业主可能不希望他们的客户知道他们可能在哪里,或者他们可能在做什么,但家庭成员可能愿意相互公开这些信息。因此,允许向其他日历用户发送或共享“可用性”组件的日历系统必须提供一种删除非必要属性的方法(例如,“摘要”、“位置”和“说明”)。

iCalendar "VFREEBUSY" information generated from "VAVAILABILITY" components MUST NOT include information other than busy or free time periods. In particular, user specified property values such as "SUMMARY", "LOCATION", and "DESCRIPTION" MUST NOT be copied into the free-busy result data.

iCalendar“VFREEBUSY”信息由“VaAvailability”组件生成,不得包含繁忙或空闲时间段以外的信息。特别是,用户指定的属性值(如“摘要”、“位置”和“说明”)不得复制到忙/闲结果数据中。

Privacy considerations in [RFC5545], [RFC5546], [RFC4791], [RFC6638], and [RFC7809] MUST also be adhered to.

还必须遵守[RFC5545]、[RFC5546]、[RFC4791]、[RFC6638]和[RFC7809]中的隐私注意事项。

10. IANA Considerations
10. IANA考虑
10.1. Component Registrations
10.1. 组件注册

This document defines the following new iCalendar components, which have been added to the registry defined in Section 8.3.1 of [RFC5545]:

本文件定义了以下新iCalendar组件,这些组件已添加到[RFC5545]第8.3.1节中定义的注册表中:

           +---------------+---------+------------------------+
           | Component     | Status  | Reference              |
           +---------------+---------+------------------------+
           | VAVAILABILITY | Current | RFC 7953, Section 3.1  |
           | AVAILABLE     | Current | RFC 7953, Section 3.1  |
           +---------------+---------+------------------------+
        
           +---------------+---------+------------------------+
           | Component     | Status  | Reference              |
           +---------------+---------+------------------------+
           | VAVAILABILITY | Current | RFC 7953, Section 3.1  |
           | AVAILABLE     | Current | RFC 7953, Section 3.1  |
           +---------------+---------+------------------------+
        
10.2. Property Registrations
10.2. 财产登记

This documents defines the following new iCalendar properties, which have been added to the registry defined in Section 8.3.2 of [RFC5545]:

本文件定义了以下新iCalendar属性,这些属性已添加到[RFC5545]第8.3.2节中定义的注册表中:

              +----------+---------+------------------------+
              | Property | Status  | Reference              |
              +----------+---------+------------------------+
              | BUSYTYPE | Current | RFC 7953, Section 3.2  |
              +----------+---------+------------------------+
        
              +----------+---------+------------------------+
              | Property | Status  | Reference              |
              +----------+---------+------------------------+
              | BUSYTYPE | Current | RFC 7953, Section 3.2  |
              +----------+---------+------------------------+
        
11. Normative References
11. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<http://www.rfc-editor.org/info/rfc2119>.

[RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, DOI 10.17487/RFC4791, March 2007, <http://www.rfc-editor.org/info/rfc4791>.

[RFC4791]Daboo,C.,Desruisseaux,B.,和L.Dusseault,“WebDAV(CalDAV)日历扩展”,RFC 4791,DOI 10.17487/RFC47912007年3月<http://www.rfc-editor.org/info/rfc4791>.

[RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, DOI 10.17487/RFC5545, September 2009, <http://www.rfc-editor.org/info/rfc5545>.

[RFC5545]Desruisseaux,B.,Ed.“互联网日历和调度核心对象规范(iCalendar)”,RFC 5545,DOI 10.17487/RFC5545,2009年9月<http://www.rfc-editor.org/info/rfc5545>.

[RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent Interoperability Protocol (iTIP)", RFC 5546, DOI 10.17487/RFC5546, December 2009, <http://www.rfc-editor.org/info/rfc5546>.

[RFC5546]Daboo,C.,Ed.“iCalendar传输独立互操作性协议(iTIP)”,RFC 5546,DOI 10.17487/RFC5546,2009年12月<http://www.rfc-editor.org/info/rfc5546>.

[RFC6638] Daboo, C. and B. Desruisseaux, "Scheduling Extensions to CalDAV", RFC 6638, DOI 10.17487/RFC6638, June 2012, <http://www.rfc-editor.org/info/rfc6638>.

[RFC6638]Daboo,C.和B.Desruisseaux,“CalDAV的计划扩展”,RFC 6638,DOI 10.17487/RFC6638,2012年6月<http://www.rfc-editor.org/info/rfc6638>.

[RFC7809] Daboo, C., "Calendaring Extensions to WebDAV (CalDAV): Time Zones by Reference", RFC 7809, DOI 10.17487/RFC7809, March 2016, <http://www.rfc-editor.org/info/rfc7809>.

[RFC7809]Daboo,C.,“WebDAV日历扩展(CalDAV):参考时区”,RFC 7809,DOI 10.17487/RFC7809,2016年3月<http://www.rfc-editor.org/info/rfc7809>.

Appendix A. Example Calendar #1

附录A.日历示例#1

   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20111113T044111Z
   DTSTART;TZID=America/Montreal:20111106T120000
   DURATION:PT2H
   SUMMARY:Meeting
   UID:768CB0C2-8642-43F7-A6C4-F8BB04B829B4
   END:VEVENT
   BEGIN:VAVAILABILITY
   UID:452DFCA7-3203-4A3D-9A9A-99753A383B41
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:466D5C68-5C4A-4078-AF5D-9C55EA9145D7
   SUMMARY:Monday to Friday from 8:00 to 18:00
   DTSTART;TZID=America/Montreal:20111002T080000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20111113T044111Z
   DTSTART;TZID=America/Montreal:20111106T120000
   DURATION:PT2H
   SUMMARY:Meeting
   UID:768CB0C2-8642-43F7-A6C4-F8BB04B829B4
   END:VEVENT
   BEGIN:VAVAILABILITY
   UID:452DFCA7-3203-4A3D-9A9A-99753A383B41
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:466D5C68-5C4A-4078-AF5D-9C55EA9145D7
   SUMMARY:Monday to Friday from 8:00 to 18:00
   DTSTART;TZID=America/Montreal:20111002T080000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
        

Appendix B. Example Calendar #2

附录B.日历示例#2

   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20111113T044111Z
   DTSTART;TZID=America/Denver:20111106T120000
   DURATION:PT2H
   SUMMARY:Lunch meeting in Denver
   UID:2346C09A-42BF-439E-916C-FC83AF869171
   END:VEVENT
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:627A87FA-E5F1-43C0-B3B1-567DA10F2A83
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:A833E850-892B-43F6-98B6-C15A6BFC5D27
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T080000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:F01411E3-38B8-4490-8A1F-0CCEC57A0943
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Denver:20111023T000000
   DTEND;TZID=America/Denver:20111030T000000
   PRIORITY:1
   BEGIN:AVAILABLE
   UID:A35AA091-3846-48ED-96F6-881E8A0D0A93
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Denver:20111023T080000
   DTEND;TZID=America/Denver:20111023T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Denver
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//example.com//iCalendar 2.0//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20111113T044111Z
   DTSTART;TZID=America/Denver:20111106T120000
   DURATION:PT2H
   SUMMARY:Lunch meeting in Denver
   UID:2346C09A-42BF-439E-916C-FC83AF869171
   END:VEVENT
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:627A87FA-E5F1-43C0-B3B1-567DA10F2A83
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Montreal:20111002T000000
   BEGIN:AVAILABLE
   UID:A833E850-892B-43F6-98B6-C15A6BFC5D27
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Montreal:20111002T080000
   DTEND;TZID=America/Montreal:20111002T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Montreal
   END:AVAILABLE
   END:VAVAILABILITY
   BEGIN:VAVAILABILITY
   ORGANIZER:mailto:bernard@example.com
   UID:F01411E3-38B8-4490-8A1F-0CCEC57A0943
   DTSTAMP:20111005T133225Z
   DTSTART;TZID=America/Denver:20111023T000000
   DTEND;TZID=America/Denver:20111030T000000
   PRIORITY:1
   BEGIN:AVAILABLE
   UID:A35AA091-3846-48ED-96F6-881E8A0D0A93
   SUMMARY:Monday to Friday from 9:00 to 17:00
   DTSTART;TZID=America/Denver:20111023T080000
   DTEND;TZID=America/Denver:20111023T180000
   RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
   LOCATION:Denver
   END:AVAILABLE
   END:VAVAILABILITY
   END:VCALENDAR
        

Acknowledgements

致谢

Thanks to the following for providing feedback: Toby Considine, Bernard Desruisseaux, Alexey Melnikov, Daniel Migault, Ken Murchison, Evert Pot, and Dave Thewlis. This specification came about via discussions at the Calendaring and Scheduling Consortium.

感谢以下提供反馈的人:托比·康西丁、伯纳德·德鲁伊斯、阿列克西·梅尔尼科夫、丹尼尔·米戈尔特、肯·默奇森、埃弗特·波特和戴夫·泰利斯。该规范是通过日历和日程安排联盟的讨论制定的。

Authors' Addresses

作者地址

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 United States of America

Cyrus Daboo苹果公司,美国加利福尼亚州库比蒂诺市无限环1号,邮编95014

   Email: cyrus@daboo.name
   URI:   http://www.apple.com/
        
   Email: cyrus@daboo.name
   URI:   http://www.apple.com/
        

Michael Douglass Spherical Cow Group 226 3rd Street Troy, NY 12180 United States of America

美国纽约州特洛伊市第三街226号迈克尔·道格拉斯球形奶牛集团,邮编:12180

   Email: mdouglass@sphericalcowgroup.com
   URI:   http://sphericalcowgroup.com
        
   Email: mdouglass@sphericalcowgroup.com
   URI:   http://sphericalcowgroup.com