RFC 5545는 캘린더 서비스나 프로토콜에 관계 없이 events, to-dos, journal entries, free/busy information와 같은 캘린더 및 일정 정보를 표현하고 교환하기 위한 iCalendar 데이터 포맷을 정의한다.

1. Introduction

지난 10년 동안 캘린더 및 일정 관리의 사용은 상당히 증가했습니다. 기업 및 기업 간 비즈니스는 이 정보 기술을 사용하여 이벤트와 작업을 신속하게 예약하는 데 의존하게 되었습니다. 이 메모는 서로 다른 캘린더 및 스케줄링 애플리케이션 간의 상호 운용성 수준을 발전시키기 위한 것입니다. 이 메모는 전자 캘린더 및 스케줄링 정보를 교환하기 위한 MIME 콘텐츠 유형을 정의합니다. 인터넷 캘린더 및 스케줄링 핵심 객체 사양(iCalendar)을 사용하면 개인 정보 관리자(PIM) 또는 그룹 스케줄링 제품과 같이 일반적으로 캘린더 및 스케줄링 애플리케이션 내에 저장된 정보를 캡처하고 교환할 수 있습니다.

iCalendar 형식은 애플리케이션 또는 시스템 간의 교환 형식으로 적합합니다. 이 형식은 MIME 콘텐츠 유형으로 정의됩니다. 따라서 SMTP, HTTP, 파일 시스템, 메모리 기반 클립보드 사용 또는 끌어서 놓기 상호 작용과 같은 데스크톱 대화형 프로토콜, 지점 간 비동기 통신, 유선 네트워크 전송 또는 적외선과 같은 일부 형태의 무선 전송을 포함하되 이에 국한되지 않는 여러 전송을 사용하여 개체를 교환할 수 있습니다.

또한 이 메모에서는 회의나 약속, 할 일, 저널 항목의 요청, 회신, 수정, 취소와 같은 캘린더 및 예약 작업을 지원하기 위해 이 콘텐츠 유형을 메시지 세트에 매핑하는 iCalendar 객체 메서드의 정의에 대해서도 설명합니다. iCalendar 객체 메서드를 사용하여 여유 시간/바쁨 시간 데이터 요청 및 응답과 같은 기타 캘린더 및 스케줄링 작업을 정의할 수 있습니다. 이러한 스케줄링 프로토콜은 [2446bis]에 정의된 iTIP(iCalendar 전송 독립적 상호 운용성 프로토콜)에 정의되어 있습니다.

이 메모에는 [RFC5234]에 정의된 인터넷 ABNF에 기반한 콘텐츠 유형에 대한 공식 문법도 포함되어 있습니다. 이 ABNF는 파서 구현에 필요하며 메모의 설명적 산문 정의를 해석할 때 모호함이나 의문이 발생할 때 최종 참조 자료로 사용됩니다. ABNF 구문으로 쉽게 표현할 수 없는 추가 제한 사항은 ABNF에서 주석으로 지정됩니다. 규범적인 문장이 포함된 주석은 그렇게 취급해야 합니다.

Note
MIME 타입

클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘이다. 웹에서 파일의 확장자는 의미가 없으며, 클라이언트에게 어떤 형식인지를 전달하기 위해 서버가 설정하는 타입이다. (참고)

2. Basic Grammar and Conventions

이 문서에서 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 및 "OPTIONAL"이라는 키워드는 [RFC2119]에 설명된 대로 해석해야 합니다.

이 메모는 캘린더 및 일정 관리 형식을 정의하기 위해 설명적인 산문과 보다 공식적인 표기법을 모두 사용합니다.

이 메모에 사용된 표기법은 [RFC5234]의 ABNF 표기법입니다. 이 메모에 정의된 형식을 구현하려는 독자는 이 표기법을 숙지해야 이 메모의 사양을 올바르게 해석할 수 있습니다.

이 메모에서 사용된 모든 숫자 값은 십진수 표기법으로 제공됩니다.

프로퍼티, 프로퍼티 매개변수, 열거된 프로퍼티 값, 프로퍼티 매개변수 값의 모든 이름은 대소문자를 구분하지 않습니다. 그러나 다른 모든 속성 값은 달리 명시되지 않는 한 대소문자를 구분합니다.

Note

이와 같이 들여쓰기된 모든 편집 노트는 독자에게 추가 정보를 제공하기 위한 것입니다. 이 정보는 이 메모를 준수하는 구현을 구축하는 데 필수적인 것은 아닙니다. 이 정보는 메모의 특정 기능이나 특성을 강조하기 위해 제공됩니다.

iCalendar 객체의 형식은 text/directory media type [RFC2425]의 구문을 기반으로 합니다. iCalendar 개체는 text/directory media type [RFC2425]의 프로파일은 아니지만, [RFC2425] 사양의 여러 요소를 재사용합니다.

2.1. Formatting Conventions

이 메모에 정의된 요소는 산문으로 정의되어 있습니다. 이를 설명하는 데 사용된 많은 용어는 이 메모의 표준 사용법과 다른 일반적인 사용법을 가지고 있습니다. 이 메모에서는 캘린더 및 스케줄링 모델, 핵심 객체(이 메모) 또는 상호 운용성 프로토콜[2446bis]의 요소를 참조하기 위해 몇 가지 서식 규칙을 사용했습니다. 캘린더 및 일정 관리 역할은 따옴표로 묶인 텍스트 문자열로 참조되며 각 단어의 첫 글자는 대문자로 표시됩니다. 예를 들어, "Organizer"는 [2446bis]에 정의된 스케줄링 프로토콜 내에서 "Calendar User"의 역할을 의미합니다. 이 메모에 정의된 캘린더 구성 요소는 대문자로 따옴표로 묶인 문자열로 참조됩니다. 모든 캘린더 구성요소는 문자 "V"로 시작합니다. 예를 들어, "VEVENT"는 이벤트 캘린더 구성요소, "VTODO"는 할 일 캘린더 구성요소, "VJOURNAL"은 일일 일기 캘린더 구성요소를 나타냅니다. iTIP [2446bis]에 정의된 스케줄링 메서드는 대문자로 따옴표로 묶인 텍스트 문자열로 참조됩니다. 예를 들어, "REQUEST"은 일정관리 캘린더 구성 요소의 생성 또는 수정을 요청하는 메서드를 의미하며, "REPLY"은 요청을 받은 사람이 캘린더 구성 요소의 "Organizer"에게 자신의 상태를 업데이트하는 데 사용하는 메서드를 의미합니다.

이 메모에 정의된 속성은 대문자로 따옴표로 묶인 텍스트 문자열 뒤에 "property"이라는 단어가 붙어서 참조됩니다. 예를 들어, "ATTENDEE" property은 캘린더 사용자의 캘린더 주소를 전달하는 데 사용되는 iCalendar 속성을 나타냅니다. 이 메모에 정의된 속성 매개변수는 소문자로 따옴표로 묶인 텍스트 문자열 뒤에 "parameter"라는 단어가 붙어서 참조됩니다. 예를 들어, "value" parameter는 속성 값의 기본값 유형을 재정의하는 데 사용되는 iCalendar 속성 매개변수를 나타냅니다. 이 메모에 정의된 열거된 값은 대문자로 된 텍스트를 단독으로 사용하거나 그 뒤에 "value"라는 단어를 사용하여 참조합니다. 예를 들어, "MINUTELY" value은 "RECUR" 값 유형의 "FREQ" 구성 요소와 함께 사용하여 1분 이상의 간격을 기준으로 반복 구성 요소를 지정할 수 있습니다.

다음 표에는 이 문서에서 참조하는 [US-ASCII] 문자 집합의 다양한 문자가 나열되어 있습니다. 각 문자에 대해 이 표에는 이 문서 전체에서 사용되는 문자 이름과 해당 US-ASCII 소수점 코드포인트가 명시되어 있습니다.

Character name Decimal codepoint

HTAB

9

LF

10

CR

13

DQUOTE

22

SPACE

32

PLUS SIGN

43

COMMA

44

HYPHEN-MINUS

45

PERIOD

46

SOLIDUS

47

COLON

58

SEMICOLON

59

LATIN CAPITAL LETTER N

78

LATIN CAPITAL LETTER T

84

LATIN CAPITAL LETTER X

88

LATIN CAPITAL LETTER Z

90

BACKSLASH

92

LATIN SMALL LETTER N

110

구현자는 이 메모와 함께 인터넷 캘린더 및 스케줄링 표준을 위한 프레임워크를 구성하는 다른 여러 메모를 숙지해야 합니다. 이 메모는 객체, 값 유형, 속성 및 속성 매개변수에 대한 핵심 사양을 지정합니다.

  • iTIP [2446bis]는 서로 다른 구현 간의 스케줄링을 위한 상호 운용성 프로토콜을 지정합니다;

  • iCalendar 메시지 기반 상호 운용성 프로토콜(iMIP) [2447bis]는 [2446bis]에 대한 인터넷 이메일 바인딩을 지정합니다.

이 메모에서는 이러한 다른 메모의 개념이나 정의에 대한 사양을 반복하지 않습니다. 가능한 경우 이러한 개념 또는 정의의 사양을 제공하는 메모를 참조합니다.

3. iCalendar Object Specification

다음 섹션에서는 캘린더 및 스케줄링 코어 객체 사양의 세부사항을 정의합니다. 캘린더 및 스케줄링 코어 개체는 캘린더 및 스케줄링 정보의 모음입니다. 일반적으로 이 정보는 하나 이상의 iCalendar 개체가 있는 iCalendar 스트림으로 구성됩니다. iCalendar 객체의 본문은 일련의 캘린더 속성과 하나 이상의 캘린더 구성 요소로 구성됩니다.

3.1절에서는 콘텐츠 줄 형식을 정의하고, 3.2절에서는 속성 매개변수 형식을 정의하고, 3.3절에서는 속성 값의 데이터 형식을 정의하고, 3.4절에서는 iCalendar 개체 형식을 정의하고, 3.5절에서는 iCalendar 속성 형식을 정의하고, 3.6절에서는 캘린더 구성요소 형식을 정의하고, 3.7절에서는 캘린더 속성을 정의하고, 3.8절에서는 캘린더 구성요소의 속성을 정의합니다.

이 정보는 MIME 콘텐츠 유형 등록의 필수적인 부분입니다. 또한 이 정보는 이러한 콘텐츠 등록과 무관하게 사용할 수 있습니다. 특히 이 메모는 파일, 메모리 또는 네트워크 기반 전송 메커니즘에서 캘린더 및 스케줄링 교환 형식으로 사용하기 위해 직접 적용할 수 있습니다.

3.1. Content Lines

iCalendar 개체는 내용 줄이라고 하는 개별 텍스트 줄로 구성됩니다. 콘텐츠 줄은 줄 바꿈으로 구분되며, 줄 바꿈은 CRLF 시퀀스(CR 문자 다음에 LF 문자)입니다.

텍스트 줄은 줄 바꿈을 제외하고 75옥텟을 넘지 않아야 합니다. 긴 콘텐츠 줄은 줄 "folding" 기법을 사용하여 여러 줄로 나눠서 표시해야 합니다. 즉, 긴 줄 바로 뒤에 단일 선형 공백 문자(예: SPACE 또는 HTAB)를 삽입하여 긴 줄을 두 문자로 분할할 수 있습니다. 콘텐츠 유형을 처리할 때 단일 선형 공백 문자가 바로 뒤에 오는 모든 CRLF 시퀀스는 무시됩니다(즉, 제거됩니다).

예를 들어, 줄입니다:

DESCRIPTION:This is a long description that exists on a long line.

다음과 같이 표현할 수 있습니다:

DESCRIPTION:This is a lo
 ng description
  that exists on a long line.

이 접힌 여러 줄 표현에서 한 줄 표현으로 이동하는 과정을 "unfolding"라고 합니다. 펼치기는 CRLF와 바로 뒤에 오는 선형 공백 문자를 제거하여 수행됩니다.

콘텐츠 줄을 구문 분석할 때 접힌 줄은 반드시 위에 설명된 펼치기 절차에 따라 먼저 펼쳐야 합니다.

Note

매우 간단한 구현에서는 UTF-8 다중 옥텟 시퀀스 중간에 부적절하게 접힌 줄이 생성될 수 있습니다. 따라서 구현에서는 원래 시퀀스를 올바르게 복원할 수 있는 방식으로 줄을 펼쳐야 합니다.

iCalendar 객체와 관련된 콘텐츠 정보는 [RFC2425]에 정의된 것과 유사한 구문을 사용하여 형식이 지정됩니다. 즉, 콘텐츠 정보는 CRLF로 구분된 콘텐츠 줄로 구성됩니다.

다음 표기법은 iCalendar 개체의 콘텐츠 줄을 정의합니다:

contentline   = name *(";" param ) ":" value CRLF
; This ABNF is just a general definition for an initial parsing
; of the content line into its property name, parameter list,
; and value string

; When parsing a content line, folded lines MUST first
; be unfolded according to the unfolding procedure
; described above.  When generating a content line, lines
; longer than 75 octets SHOULD be folded according to
; the folding procedure described above.

name          = iana-token / x-name

iana-token    = 1*(ALPHA / DIGIT / "-")
; iCalendar identifier registered with IANA

x-name        = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-")
; Reserved for experimental use.

vendorid      = 3*(ALPHA / DIGIT)
; Vendor identification

param         = param-name "=" param-value *("," param-value)
; Each property defines the specific ABNF for the parameters
; allowed on the property.  Refer to specific properties for
; precise parameter ABNF.

param-name    = iana-token / x-name

param-value   = paramtext / quoted-string

paramtext     = *SAFE-CHAR

value         = *VALUE-CHAR

quoted-string = DQUOTE *QSAFE-CHAR DQUOTE

QSAFE-CHAR    = WSP / %x21 / %x23-7E / NON-US-ASCII
; Any character except CONTROL and DQUOTE

SAFE-CHAR     = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
           / NON-US-ASCII
; Any character except CONTROL, DQUOTE, ";", ":", ","

VALUE-CHAR    = WSP / %x21-7E / NON-US-ASCII
; Any textual character

NON-US-ASCII  = UTF8-2 / UTF8-3 / UTF8-4
; UTF8-2, UTF8-3, and UTF8-4 are defined in [RFC3629]

CONTROL       = %x00-08 / %x0A-1F / %x7F
; All the controls except HTAB

콘텐츠 줄의 속성 값 구성 요소에는 속성별로 고유한 형식이 있습니다. 이 형식에 대한 정의는 각 속성을 설명하는 섹션을 참조하세요.

모든 속성 이름, 속성 매개변수, 열거된 속성 값 및 속성 매개변수 값은 대소문자를 구분하지 않습니다. 그러나 다른 모든 속성 값은 달리 명시되지 않는 한 대소문자를 구분합니다.

3.1.1. List and Field Separators

일부 속성 및 매개변수는 값 목록을 허용합니다. 값 목록의 값은 반드시 쉼표로 구분해야 합니다. 목록의 값 순서에는 의미가 없습니다. 따옴표로 묶은 문자열로 지정된 매개변수 값(예: URI 값을 지정하는 값)의 경우 개별 따옴표로 묶은 문자열은 COMMA 문자로 구분됩니다.

일부 속성 값은 여러 부분으로 정의됩니다. 이러한 구조화된 속성 값은 반드시 세미콜론 문자로 값 부분을 구분해야 합니다.

일부 속성은 매개변수 목록을 허용합니다. 속성 매개변수 목록의 각 속성 매개변수는 세미콜론 문자로 구분해야 합니다.

콜론 문자, 세미콜론 문자 또는 콤마 문자가 포함된 값이 있는 속성 매개 변수는 반드시 따옴표로 묶은 텍스트 안에 넣어야 합니다.

예를 들어 다음 속성에서 세미콜론은 속성 매개 변수를 서로 구분하는 데 사용되며 COMMA 문자는 값 목록에서 속성 값을 구분하는 데 사용됩니다.

ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto:
jsmith@example.com

RDATE;VALUE=DATE:19970304,19970504,19970704,19970904

3.1.2. Multiple Values

iCalendar 객체에 정의된 일부 속성은 여러 값을 가질 수 있습니다. 다중 값 항목을 인코딩하는 일반적인 규칙은 속성 이름을 포함하여 각 값에 대해 새 콘텐츠 줄을 만드는 것입니다. 그러나 일부 속성은 값을 쉼표 문자로 구분하여 단일 속성에서 여러 값을 인코딩하는 것을 지원합니다. 특정 속성이 여러 값을 허용하는지 여부와 이 두 가지 형식 중 어떤 형식을 허용하는지 확인하려면 개별 속성 정의를 참조해야 합니다. 다중 값 속성을 사용하여 동일한 값의 여러 언어 변형을 지정해서는 안 됩니다. 캘린더 애플리케이션은 모든 값을 표시해야 합니다.

3.1.3. Binary Content

iCalendar 객체의 바이너리 콘텐츠 정보는 속성 값 내의 URI를 사용하여 참조해야 합니다. 즉, 바이너리 콘텐츠 정보는 iCalendar 객체 내에서 URI로 참조할 수 있는 외부 MIME 엔티티에 배치되어야 합니다. 이것이 가능하지 않은 애플리케이션에서는 바이너리 콘텐츠 정보를 [RFC4648]에 정의된 "BASE64" 인코딩 방법을 사용하여 먼저 텍스트로 인코딩한 후에만 iCalendar 객체 내에 포함할 수 있습니다. 인라인 바이너리 콘텐츠는 특별한 상황에서 iCalendar 개체를 단일 엔티티로 표현해야 하는 애플리케이션에서만 사용해야 합니다. 인라인 바이너리 콘텐츠 정보를 포함하는 속성에는 반드시 "ENCODING" 속성 매개변수를 지정해야 합니다. iCalendar 객체 외부에 배치된 바이너리 콘텐츠 정보는 유니폼 리소스 식별자(URI)로 참조되어야 합니다.

다음 예는 URI 참조를 사용하여 iCalendar 객체 외부의 첨부 파일을 참조하는 "ATTACH" 속성을 지정합니다:

ATTACH:http://example.com/public/quarterly-report.doc

다음 예제에서는 인라인 바이너리 인코딩된 콘텐츠 정보가 포함된 "ATTACH" 속성을 지정합니다:

ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:VGhlIH
 F1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4

3.1.4. Character Set

속성 값에 사용되는 문자셋을 선언하는 속성 매개변수는 없습니다. iCalendar 스트림의 기본 문자셋은 [RFC3629]에 정의된 대로 UTF-8입니다.

사용 중인 문자셋을 지정하려면 MIME 전송에서 "charset" Content-Type 매개변수를 사용해야 합니다.

3.2. Property Parameters

속성에는 속성과 연관된 속성이 있을 수 있습니다. 이러한 "속성 매개변수"에는 속성 또는 속성 값에 대한 메타 정보가 포함됩니다. 속성 매개변수는 속성 값의 대체 텍스트 표현 위치, 텍스트 속성 값의 언어, 속성 값의 값 유형 및 기타 속성과 같은 정보를 지정하기 위해 제공됩니다.

콜론, 세미콜론 또는 콤마 문자 구분 기호가 포함된 속성 매개변수 값은 반드시 따옴표로 묶인 문자열 텍스트 값으로 지정해야 합니다. 속성 매개 변수 값에는 DQUOTE 문자가 포함되어서는 안 됩니다. DQUOTE 문자는 제한된 문자 또는 URI 텍스트가 포함된 매개변수 값의 구분 기호로 사용됩니다. 예를 들어

DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild
  Wizards Conference - - Las Vegas\, NV\, USA

따옴표로 묶이지 않은 속성 매개변수 값은 대소문자를 구분하지 않습니다.

이 메모에서 정의하는 일반적인 속성 매개변수는 다음과 같은 표기법으로 정의됩니다:

icalparameter = altrepparam       ; Alternate text representation
              / cnparam           ; Common name
              / cutypeparam       ; Calendar user type
              / delfromparam      ; Delegator
              / deltoparam        ; Delegatee
              / dirparam          ; Directory entry
              / encodingparam     ; Inline encoding
              / fmttypeparam      ; Format type
              / fbtypeparam       ; Free/busy time type
              / languageparam     ; Language for text
              / memberparam       ; Group or list membership
              / partstatparam     ; Participation status
              / rangeparam        ; Recurrence identifier range
              / trigrelparam      ; Alarm trigger relationship
              / reltypeparam      ; Relationship type
              / roleparam         ; Participation role
              / rsvpparam         ; RSVP expectation
              / sentbyparam       ; Sent by
              / tzidparam         ; Reference to time zone object
              / valuetypeparam    ; Property value data type
              / other-param

other-param   = (iana-param / x-param)

iana-param  = iana-token "=" param-value *("," param-value)
; Some other IANA-registered iCalendar parameter.

x-param     = x-name "=" param-value *("," param-value)
; A non-standard, experimental parameter.

애플리케이션은 인식하지 못하는 x-param 및 iana-param 값을 무시해야 합니다.

3.2.1. Alternate Text Representation

Parameter Name

ALTREP

Purpose

속성 값에 대한 대체 텍스트 표현을 지정합니다.

Format Definition

이 속성 매개변수는 다음 표기법으로 정의됩니다:

altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE
Description

이 매개변수는 텍스트 속성 값의 대체 표현을 가리키는 URI를 지정합니다. 이 매개변수를 지정하는 속성에는 텍스트 값의 기본 표현을 반영하는 값도 포함되어야 합니다. URI 매개변수 값은 반드시 따옴표로 묶인 문자열로 지정해야 합니다.

Note

이 매개변수에 허용되는 URI 스키마에 대한 제한은 없지만, 현재 구현에서 가장 일반적으로 사용되는 URI 스키마는 CID(콘텐츠 식별자) [RFC2392], HTTP [RFC2616] 및 HTTPS [RFC2818]입니다.

Example
DESCRIPTION;ALTREP="CID:part3.msg.970415T083000@example.com":
 Project XYZ Review Meeting will include the following agenda
  items: (a) Market Overview\, (b) Finances\, (c) Project Man
 agement

"ALTREP" 속성 매개변수 값은 "text/html" 콘텐츠 부분을 가리킬 수 있습니다.

Content-Type:text/html
Content-Id:<part3.msg.970415T083000@example.com>

<html>
 <head>
  <title></title>
 </head>
 <body>
   <p>
     <b>Project XYZ Review Meeting</b> will include
     the following agenda items:
     <ol>
       <li>Market Overview</li>
       <li>Finances</li>
       <li>Project Management</li>
     </ol>
   </p>
 </body>
</html>

3.2.2. Common Name

Parameter Name

CN

Purpose

속성에서 지정한 캘린더 사용자와 연결할 일반 이름을 지정합니다.

Format Definition

이 속성 매개변수는 다음 표기법으로 정의됩니다:

cnparam    = "CN" "=" param-value
Description

이 매개 변수는 CAL-ADDRESS 값 유형이 있는 속성에서 지정할 수 있습니다. 이 매개 변수는 속성에서 지정한 캘린더 사용자와 연결할 일반 이름을 지정합니다. 매개변수 값은 텍스트입니다. 이 매개변수 값은 속성에서 지정한 캘린더 주소와 연결할 표시 텍스트에 사용할 수 있습니다.

Example
ORGANIZER;CN="John Smith":mailto:jsmith@example.com

3.2.3. Calendar User Type

Parameter Name

CUTYPE

Purpose

속성에서 지정한 캘린더 사용자 유형을 식별합니다.

Format Definition

이 속성 매개변수는 다음 표기법으로 정의됩니다:

cutypeparam        = "CUTYPE" "="
                  ("INDIVIDUAL"   ; An individual
                 / "GROUP"        ; A group of individuals
                 / "RESOURCE"     ; A physical resource
                 / "ROOM"         ; A room resource
                 / "UNKNOWN"      ; Otherwise not known
                 / x-name         ; Experimental type
                 / iana-token)    ; Other IANA-registered
                                  ; type
; Default is INDIVIDUAL
Description

이 매개 변수는 CAL-ADDRESS 값 유형이 있는 속성에서 지정할 수 있습니다. 이 매개 변수는 속성에서 지정한 캘린더 사용자 유형을 식별합니다. 이 매개 변수를 허용하는 속성에 지정되지 않은 경우 기본값은 INDIVIDUAL입니다. 애플리케이션은 인식하지 못하는 x-name 및 iana-token 값을 UNKNOWN 값과 동일한 방식으로 처리해야 합니다.

Example
ATTENDEE;CUTYPE=GROUP:mailto:ietf-calsch@example.org

3.2.4. Delegators

Parameter Name

DELEGATED-FROM

3.2.5. Delegatees

Parameter Name

DELEGATED-TO

3.2.6. Directory Entry Reference

Parameter Name

DIR

3.2.7. Inline Encoding

Parameter Name

ENCODING

3.2.8. Format Type

Parameter Name

FMTTYPE

3.2.9. Free/Busy Time Type

Parameter Name

FBTYPE

3.2.10. Language

Parameter Name

LANGUAGE

3.2.11. Group or List Membership

Parameter Name

MEMBER

3.2.12. Participation Status

Parameter Name

PARTSTAT

3.2.13. Recurrence Identifier Range

Parameter Name

RANGE

3.2.14. Alarm Trigger Relationship

Parameter Name

RELATED

3.2.15. Relationship Type

Parameter Name

RELTYPE

3.2.16. Participation Role

Parameter Name

ROLE

3.2.17. RSVP Expectation

Parameter Name

RSVP

3.2.18. Sent By

Parameter Name

SENT-BY

3.2.19. Time Zone Identifier

Parameter Name

TZID

Purpose

속성 값에서 시간 구성 요소의 시간대 정의에 대한 식별자를 지정합니다.

Format Definition

이 속성 매개변수는 다음 표기법으로 정의됩니다:

tzidparam  = "TZID" "=" [tzidprefix] paramtext

tzidprefix = "/"
Description

이 매개변수는 DATE-TIME 또는 TIME 값 유형이 지정되고 값이 UTC 또는 "floating" 시간이 아닌 경우 "DTSTART", "DTEND", "DUE", "EXDATE" 및 "RDATE" 속성에서 지정해야 합니다. UTC 및 "floating time" 형식에 대한 설명은 DATE-TIME 또는 TIME 값 유형 정의를 참조하십시오. 이 속성 매개변수는 속성의 시간 부분을 평가할 때 사용할 "VTIMEZONE" 캘린더 구성 요소를 고유하게 식별하는 텍스트 값을 지정합니다. "TZID" 속성 매개변수의 값은 일치하는 시간대 정의에 대한 "TZID" 속성 값과 동일합니다. iCalendar 객체에 지정된 각 고유한 "TZID" 매개변수 값에 대해 개별 "VTIMEZONE" 캘린더 구성 요소를 지정해야 합니다.

DATE-TIME이 UTC 또는 "floating" 시간이 아닌 경우 이 매개변수는 DATE-TIME 값이 있는 속성에 지정되어야 합니다. iCalendar 객체에 VTIMEZONE 정의를 포함하지 않고 따르지 않으면 특정 위치의 현지 시간을 일관성 있게 이해하지 못할 수 있습니다.

접두사로 SOLIDUS 문자가 있으면 이 "TZID"가 전역으로 정의된 표준 시간대 레지스트리(해당 레지스트리가 정의된 경우)에서 고유 ID를 나타냅니다.

Note

이 문서는 표준 시간대 식별자에 대한 명명 규칙을 정의하지 않습니다. 구현자는 public-domain TZ database[TZDB]와 같은 기존 시간대 사양에 정의된 명명 규칙을 사용할 수 있습니다. 전 세계적으로 고유한 시간대 식별자의 사양은 이 문서에서 다루지 않으며 향후 연구를 위해 남겨져 있습니다.

다음은 이 속성 매개변수의 예시입니다:

DTSTART;TZID=America/New_York:19980119T020000

DTEND;TZID=America/New_York:19980119T030000

"TZID" 속성 매개 변수는 시간 값이 UTC로 지정된 DATE 속성 및 DATE-TIME 또는 TIME 속성에 적용해서는 안 됩니다.

"TZID" 속성 매개변수 없이 DATE-TIME 또는 TIME 값에 현지 시간을 사용하면 iCalendar 객체에 "VTIMEZONE" 캘린더 구성 요소가 있는지 여부에 관계없이 부동 시간으로 해석됩니다.

자세한 내용은 DATE-TIME 및 TIME 값 유형에 대한 섹션을 참조하십시오.

3.2.20. Value Data Types

Parameter Name

VALUE

3.3. Property Value Data Types

iCalendar 개체의 속성은 강력하게 유형화되어 있습니다. 각 속성의 정의는 값이 이 섹션에 정의된 값 데이터 유형 또는 단순히 값 유형 중 하나로 제한됩니다. 속성의 값 유형은 기본 값 유형으로 암시적으로 지정되거나 "VALUE" 매개변수를 사용하여 명시적으로 지정됩니다. 속성의 값 유형이 대체 유효한 유형 중 하나인 경우 "VALUE" 매개 변수를 사용하여 명시적으로 지정해야 합니다.

3.3.1. Binary

Value Name

BINARY

3.3.2. Boolean

Value Name

BOOLEAN

3.3.3. Calendar User Address

Value Name

CAL-ADDRESS

3.3.4. Date

Value Name

CAL-ADDRESS

Purpose

This value type is used to identify values that contain a calendar date.

Format Definition

This value type is defined by the following notation:

date               = date-value

date-value         = date-fullyear date-month date-mday
date-fullyear      = 4DIGIT
date-month         = 2DIGIT        ;01-12
date-mday          = 2DIGIT        ;01-28, 01-29, 01-30, 01-31
                                   ;based on month/year
Description

속성이 허용하는 경우 여러 "date" 값이 COMMA-separated 목록으로 지정됩니다. 값 유형의 형식은 달력 날짜의 기본 형식인 [ISO.8601.2004] 완전 표현을 기반으로 합니다. 텍스트 형식은 four-digit year, two-digit month 및 two-digit day을 지정합니다. year, month, day 구성 요소 텍스트 사이에는 구분 문자가 없습니다.

이 값 유형에는 추가 콘텐츠 값 인코딩(예: BACKSLASH 문자 인코딩, 섹션 3.3.11 참조)이 정의되어 있지 않습니다.

Example

다음은 1997년 7월 14일을 나타냅니다:

19970714

3.3.5. Date-Time

Value Name

DATE-TIME

Purpose

이 값 유형은 정확한 달력 날짜와 시간을 지정하는 값을 식별하는 데 사용됩니다.

Format Definition

이 값 유형은 다음 표기법으로 정의됩니다:

date-time  = date "T" time ;As specified in the DATE and TIME
                           ;value definitions
Description

속성이 허용하는 경우 여러 개의 "DATE-TIME" 값이 쉼표로 구분된 값 목록으로 지정됩니다. 이 값 유형에 대한 추가 콘텐츠 값 인코딩(예: BACKSLASH 문자 인코딩, 3.3.11절 참조)은 정의되지 않습니다.

"DATE-TIME" 값 유형은 정확한 달력 날짜 및 시간을 포함하는 값을 식별하는 데 사용됩니다. 이 형식은 달력 날짜 및 시간에 대한 기본 형식인 [ISO.8601.2004] 완전한 표현을 기반으로 합니다. 텍스트 형식은 "date"와 그 뒤에 시간 지정자인 LATIN CAPITAL LETTER T 문자, "time" 형식을 연결한 것입니다.

"DATE-TIME" 값 유형은 세 가지 형식으로 시간 값을 표현합니다:

UTC 오프셋이 있는 날짜 및 시간 형식은 사용하지 않아야 합니다. 예를 들어 다음은 DATE-TIME 값에 유효하지 않습니다:

19980119T230000-0800       ;Invalid time format

FORM #1: 현지 시간 포함 날짜

현지 시간 포함 날짜 형식은 UTC 지정자를 포함하지 않거나 표준 시간대를 참조하지 않는 단순한 DATE-TIME 값입니다. 예를 들어 다음은 1998년 1월 18일 오후 11시를 나타냅니다:

19980118T230000

이 유형의 DATE-TIME 값은 "floating"이라고 하며 특정 시간대에 구속되지 않습니다. 현재 관찰 중인 시간대에 관계없이 동일한 시, 분, 초 값을 나타내는 데 사용됩니다. 예를 들어, 어떤 시간대에 있든 상관없이 매일 오전 11시부터 오후 1시까지 개인이 바쁘다는 것을 나타내는 이벤트를 정의할 수 있습니다. 이러한 경우 현지 시간을 지정할 수 있습니다. 상대적인 표준 시간대 정보 없이 현지 시간으로 구성된 속성 값을 가진 iCalendar 개체의 수신자는 해당 값을 "ATTENDEE"가 특정 순간에 있는 표준 시간대로 고정된 것으로 해석해야 합니다. 즉, 서로 다른 시간대에 있는 두 명의 "Attendees"가 floating time으로 동일한 이벤트 정의를 수신하더라도 실제 시간은 서로 다를 수 있습니다. Floating time은 합리적인 동작인 경우에만 사용해야 합니다.

대부분의 경우 고정 시간이 필요합니다. 속성 값에 고정 시간을 올바르게 전달하려면 UTC 시간 또는 표준 시간대 참조가 있는 현지 시간을 지정해야 합니다.

"TZID" 속성 매개변수 없이 DATE-TIME 값에 현지 시간을 사용하는 것은 iCalendar 객체에 "VTIMEZONE" 캘린더 구성 요소가 있는지 여부와 관계없이 floating time으로 해석됩니다.

FORM #2: UTC 시간이 있는 날짜

UTC 시간 또는 절대 시간이 포함된 날짜는 시간 값에 추가된 UTC 지정자인 LATIN CAPITAL LETTER Z 접미사 문자로 식별됩니다. 예를 들어 다음은 1998년 1월 19일 07:00 UTC를 나타냅니다:

19980119T070000Z

시간 값이 UTC로 지정된 DATE-TIME 속성에는 "TZID" 속성 매개 변수를 적용해서는 안 됩니다.

FORM #3: 현지 시간 및 표준 시간대 참조가 있는 날짜

표준 시간대 정보를 참조하는 날짜 및 현지 시간은 적절한 표준 시간대 정의를 참조하기 위해 "TZID" 속성 매개 변수를 사용하여 식별합니다. "TZID"는 섹션 3.2.19에서 자세히 설명합니다. 예를 들어 다음은 1998년 1월 19일 뉴욕의 오전 2시를 나타냅니다:

TZID=America/New_York:19980119T020000

참조된 표준 시간대의 정의에 따라 설명된 현지 시간이 두 번 이상 발생하는 경우(일광 절약 시간제에서 표준 시간제로 변경할 때) DATE-TIME 값은 참조된 시간의 첫 번째 발생을 나타냅니다. 따라서 TZID=America/Now_York:20071104T013000 은 2007년 11월 4일 오전 1시 30분 EDT(UTC-04:00)을 나타냅니다. 설명된 현지 시간이 발생하지 않는 경우(표준시에서 서머타임으로 변경하는 경우), 현지 시간 차이 이전의 UTC offset을 사용하여 DATE-TIME 값이 해석됩니다. 따라서 TZID=America/New_York:20070311T023000 은 2007년 3월 11일 오전 3시 30분 EDT(UTC-04:00)을 나타내며, 이는 EST(UTC-05:00) 오전 1시 30분에서 한 시간 후입니다.

시간 값은 양수 윤초를 지정할 때 초 60만 지정해야 합니다. 예:

19970630T235960Z

윤초를 지원하지 않는 구현은 초 60을 초 59와 동등한 것으로 해석해야 합니다.

Example

다음은 "DTSTART" 속성을 사용하여 세 가지 시간 형식 각각에서 1997년 7월 14일 오후 1시 30분에 뉴욕시를 나타냅니다.

DTSTART:19970714T133000                   ; Local time
DTSTART:19970714T173000Z                  ; UTC time
DTSTART;TZID=America/New_York:19970714T133000
                                          ; Local time and time
                                          ; zone reference

3.3.6. Duration

Value Name

DURATION

3.3.7. Float

Value Name

FLOAT

3.3.8. Integer

Value Name

INTEGER

3.3.9. Period of Time

Value Name

PERIOD

3.3.10. Recurrence Rule

Value Name

RECUR

Purpose

이 value type은 반복 규칙 사양이 포함된 속성을 식별하는데 사용한다.

Format Definition

이 값 유형은 다음 표기법으로 정의됩니다:

recur           = recur-rule-part *( ";" recur-rule-part )
               ;
               ; The rule parts are not ordered in any
               ; particular sequence.
               ;
               ; The FREQ rule part is REQUIRED,
               ; but MUST NOT occur more than once.
               ;
               ; The UNTIL or COUNT rule parts are OPTIONAL,
               ; but they MUST NOT occur in the same 'recur'.
               ;
               ; The other rule parts are OPTIONAL,
               ; but MUST NOT occur more than once.

recur-rule-part = ( "FREQ" "=" freq )
               / ( "UNTIL" "=" enddate )
               / ( "COUNT" "=" 1*DIGIT )
               / ( "INTERVAL" "=" 1*DIGIT )
               / ( "BYSECOND" "=" byseclist )
               / ( "BYMINUTE" "=" byminlist )
               / ( "BYHOUR" "=" byhrlist )
               / ( "BYDAY" "=" bywdaylist )
               / ( "BYMONTHDAY" "=" bymodaylist )
               / ( "BYYEARDAY" "=" byyrdaylist )
               / ( "BYWEEKNO" "=" bywknolist )
               / ( "BYMONTH" "=" bymolist )
               / ( "BYSETPOS" "=" bysplist )
               / ( "WKST" "=" weekday )

freq        = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
           / "WEEKLY" / "MONTHLY" / "YEARLY"

enddate     = date / date-time

byseclist   = ( seconds *("," seconds) )

seconds     = 1*2DIGIT       ;0 to 60

byminlist   = ( minutes *("," minutes) )

minutes     = 1*2DIGIT       ;0 to 59

byhrlist    = ( hour *("," hour) )

hour        = 1*2DIGIT       ;0 to 23

bywdaylist  = ( weekdaynum *("," weekdaynum) )

weekdaynum  = [[plus / minus] ordwk] weekday

plus        = "+"

minus       = "-"

ordwk       = 1*2DIGIT       ;1 to 53

weekday     = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
;FRIDAY, and SATURDAY days of the week.

bymodaylist = ( monthdaynum *("," monthdaynum) )

monthdaynum = [plus / minus] ordmoday

ordmoday    = 1*2DIGIT       ;1 to 31

byyrdaylist = ( yeardaynum *("," yeardaynum) )

yeardaynum  = [plus / minus] ordyrday

ordyrday    = 1*3DIGIT      ;1 to 366

bywknolist  = ( weeknum *("," weeknum) )

weeknum     = [plus / minus] ordwk

bymolist    = ( monthnum *("," monthnum) )

monthnum    = 1*2DIGIT       ;1 to 12

bysplist    = ( setposday *("," setposday) )

setposday   = yeardaynum
Description

이 값 유형은 하나 이상의 반복 문법 부분의 목록으로 구성된 구조화된 값입니다. 각 규칙 부분은 이름=값 쌍으로 정의됩니다. 규칙 부분은 세미콜론 문자로 서로 구분됩니다. 규칙 부분은 특정 순서로 정렬되지 않습니다. 개별 규칙 부분은 반드시 한 번만 지정해야 합니다. 호환 애플리케이션은 어떤 순서로 정렬된 규칙 부분을 허용해야 하지만, 이 iCalendar 개정 이전 애플리케이션과의 역호환성을 보장하기 위해 FREQ 규칙 부분은 RECUR 값에 지정된 첫 번째 규칙 부분이어야 합니다.

FREQ 규칙 부분은 반복 규칙의 유형을 식별합니다. 이 규칙 부분은 반드시 반복 규칙에 지정되어야 합니다. 유효한 값으로는 초 이상 간격을 기준으로 반복 이벤트를 지정하려면 SECONDLY, 1분 이상 간격을 기준으로 반복 이벤트를 지정하려면 MINUTELY, 1시간 이상 간격을 기준으로 반복 이벤트를 지정하려면 HOURLY가 있습니다; 매일: 하루 이상의 간격을 기준으로 반복 이벤트를 지정하고, 매주: 일주일 이상의 간격을 기준으로 반복 이벤트를 지정하고, 매월: 한 달 이상의 간격을 기준으로 반복 이벤트를 지정하고, 매년: 일 년 이상의 간격을 기준으로 반복 이벤트를 지정합니다.

INTERVAL 규칙 부분에는 반복 규칙이 반복되는 간격을 나타내는 양수 정수가 포함됩니다. 기본값은 "1"이며, SECONDLY 규칙의 경우 매초, MINUTELY 규칙의 경우 매분, HOURLY 규칙의 경우 매시간, DAILY 규칙의 경우 매일, WEEKLY 규칙의 경우 매주, MONTHLY 규칙의 경우 매월, YEARLY 규칙의 경우 매년을 의미합니다. 예를 들어, DAILY 규칙에서 값 "8"은 8일마다를 의미합니다.

UNTIL 규칙 부분은 포괄적인 방식으로 반복 규칙의 범위를 지정하는 DATE 또는 DATE-TIME 값을 정의합니다. UNTIL로 지정된 값이 지정된 반복과 동기화되면 이 DATE 또는 DATE-TIME이 반복의 마지막 인스턴스가 됩니다. UNTIL 규칙 부분의 값은 "DTSTART" 속성과 동일한 값 유형이어야 합니다. 또한 "DTSTART" 속성이 현지 시간이 포함된 날짜로 지정되어 있는 경우 UNTIL 규칙 부분도 현지 시간이 포함된 날짜로 지정되어야 합니다. "DTSTART" 속성이 UTC 시간이 포함된 날짜 또는 현지 시간 및 표준 시간대 참조가 포함된 날짜로 지정된 경우 UNTIL 규칙 부분은 반드시 UTC 시간이 포함된 날짜로 지정해야 합니다. "STANDARD" 및 "DAYLIGHT" 하위 구성 요소의 경우 UNTIL 규칙 부분은 항상 UTC 시간이 포함된 날짜로 지정해야 합니다. DATE-TIME 값으로 지정하는 경우 반드시 UTC 시간 형식으로 지정해야 합니다. 없는 경우, 그리고 COUNT 규칙 부분도 없는 경우, "RRULE"은 영원히 반복되는 것으로 간주됩니다.

COUNT 규칙 부분은 반복을 범위 제한할 발생 횟수를 정의합니다. "DTSTART" 속성 값은 항상 첫 번째 발생으로 계산됩니다.

BYSECOND 규칙 부분은 쉼표로 구분된 1분 이내의 초 목록을 지정합니다. 유효한 값은 0~60입니다. BYMINUTE 규칙 부분은 1시간 이내의 콤마로 구분된 분 목록을 지정합니다. 유효한 값은 0~59입니다. BYHOUR 규칙 부분은 하루 중 쉼표로 구분된 시간 목록을 지정합니다. 유효한 값은 0~23입니다. 연결된 "DTSTART" 속성의 값 유형이 DATE인 경우 BYSECOND, BYMINUTE 및 BYHOUR 규칙 부분을 지정해서는 안 됩니다. 이러한 규칙 부분은 위의 요구 사항을 위반하는 RECUR 값에서 무시되어야 합니다(예: 이 iCalendar 개정 이전 버전에서 생성된 애플리케이션에서 생성된 값).

BYDAY 규칙 부분은 쉼표로 구분된 요일 목록을 지정합니다. SU는 일요일, MO는 월요일, TU는 화요일, WE는 수요일, TH는 목요일, FR은 금요일, SA는 토요일을 나타냅니다.

각 BYDAY 값 앞에는 양수(+n) 또는 음수(-n)의 정수가 올 수도 있습니다. 이 값이 있는 경우 월별 또는 연간 "RRULE" 내에서 특정 날짜의 n번째 발생을 나타냅니다.

예를 들어, 월별 규칙 내에서 +1MO(또는 간단히 1MO)는 해당 월의 첫 번째 월요일을 나타내고, -1MO는 해당 월의 마지막 월요일을 나타냅니다. FREQ 규칙 부분이 YEARLY로 설정된 BYDAY 규칙 부분의 숫자 값은 BYMONTH 규칙 부분이 있는 경우 해당 월 내의 오프셋에 해당하며, BYWEEKNO 또는 BYMONTH 규칙 부분이 있는 경우 해당 연도 내의 오프셋에 해당합니다. 정수 수정자가 없는 경우 지정된 빈도 내에서 이 유형의 모든 날짜를 의미합니다. 예를 들어 MONTHLY 규칙 내에서 MO는 해당 월 내의 모든 월요일을 나타냅니다. FREQ 규칙 부분이 MONTHLY 또는 YEARLY로 설정되지 않은 경우 BYDAY 규칙 부분을 숫자 값으로 지정해서는 안 됩니다. 또한 BYWEEKNO 규칙 부분을 지정할 때 FREQ 규칙 부분이 YEARLY로 설정된 상태에서 BYDAY 규칙 부분을 숫자 값과 함께 지정해서는 안 됩니다.

BYMONTHDAY 규칙 부분은 쉼표로 구분된 월별 요일 목록을 지정합니다. 유효한 값은 1 ~ 31 또는 -31 ~ -1입니다. 예를 들어 -10은 해당 월의 열 번째부터 마지막 날을 나타냅니다. FREQ 규칙 부분이 매주로 설정된 경우 BYMONTHDAY 규칙 부분을 지정해서는 안 됩니다.

BYYEARDAY 규칙 부분은 쉼표로 구분된 연도별 요일 목록을 지정합니다. 유효한 값은 1 ~ 366 또는 -366 ~ -1입니다. 예를 들어 -1은 연도의 마지막 날(12월 31일)을 나타내고 -306은 연도의 306번째부터 마지막 날(3월 1일)을 나타냅니다. FREQ 규칙 부분이 매일, 매주 또는 매월로 설정된 경우 BYYEARDAY 규칙 부분을 지정해서는 안 됩니다.

BYWEEKNO 규칙 부분은 연도의 주를 지정하는 쉼표로 구분된 서수 목록을 지정합니다. 유효한 값은 1에서 53 또는 -53에서 -1입니다. 이는 [ISO.8601.2004]에 정의된 주 번호에 따른 주에 해당합니다. 한 주는 주 시작일로 정의된 요일부터 시작하여 7일의 기간으로 정의됩니다(WKST 참조). 역년의 첫 번째 주는 해당 역년에서 최소 4일이 포함된 첫 번째 주입니다. 이 규칙 부분은 FREQ 규칙 부분이 매년이 아닌 다른 값으로 설정된 경우에는 사용하지 않아야 합니다. 예를 들어 3은 해당 연도의 셋째 주를 나타냅니다.

Note

주 시작이 월요일이라고 가정할 때 53주는 목요일이 1월 1일이거나 윤년이고 수요일이 1월 1일인 경우에만 발생할 수 있습니다.

BYMONTH 규칙 부분은 쉼표로 구분된 연도 월 목록을 지정합니다. 유효한 값은 1~12입니다.

WKST 규칙 부분은 근무일이 시작되는 날짜를 지정합니다. 유효한 값은 MO, TU, WE, TH, FR, SA 및 SU입니다. 이 값은 WEEKLY "RRULE"의 간격이 1보다 크고 BYDAY 규칙 부분을 지정할 때 중요합니다. 이 값은 연도별 "RRULE"에 BYWEEKNO 규칙 부분이 지정된 경우에도 중요합니다. 기본값은 MO입니다.

BYSETPOS 규칙 부분은 규칙에 지정된 반복 인스턴스 집합 내에서 n번째 발생에 해당하는 값의 쉼표로 구분된 목록을 지정합니다. BYSETPOS는 반복 규칙의 한 간격에 있는 반복 인스턴스 집합에서 작동합니다. 예를 들어, WEEKLY 규칙에서 간격은 1주일입니다. 반복 인스턴스 세트는 FREQ 규칙 부분에 정의된 간격의 시작부터 시작됩니다. 유효한 값은 1 ~ 366 또는 -366 ~ -1입니다. 반드시 다른 BYxxx 규칙 부분과 함께 사용해야 합니다. 예를 들어 "해당 월의 마지막 근무일"은 다음과 같이 표현할 수 있습니다:

FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1

각 BYSETPOS 값은 양수(+n) 또는 음수(-n)의 정수를 포함할 수 있습니다. 이 값이 있는 경우 규칙에 지정된 발생 집합 내에서 특정 발생의 n번째 발생을 나타냅니다.

반복 규칙은 잘못된 날짜(예: 2월 30일) 또는 존재하지 않는 현지 시간(예: 현지 시간이 1시간 앞당겨진 날의 오전 1시 30분, 오전 1시)을 가진 반복 인스턴스를 생성할 수 있습니다. 이러한 반복 인스턴스는 무시해야 하며 반복 집합의 일부로 계산해서는 안 됩니다.

규칙에 포함되지 않은 다양한 반복 인스턴스 시작 시간 및 날짜를 결정하는 데 필요한 정보는 시작 시간("DTSTART") 구성 요소 속성에서 파생됩니다. 예를 들어, "FREQ=YEARLY;BYMONTH=1"은 월 내 특정 날짜나 시간을 지정하지 않습니다. 이 정보는 "DTSTART"에 지정된 것과 동일합니다.

BYxxx 규칙 부분은 어떤 방식으로든 반복을 수정합니다. 빈도와 같거나 더 큰 기간의 BYxxx 규칙 부분은 일반적으로 생성된 반복의 발생 횟수를 줄이거나 제한합니다. 예를 들어, "FREQ=DAILY;BYMONTH=1"은 반복 인스턴스 수를 모든 일(BYMONTH 규칙 부분이 없는 경우)에서 1월의 모든 일로 줄입니다. 빈도보다 짧은 기간에 대한 BYxxx 규칙 부분은 일반적으로 반복 발생 횟수를 늘리거나 확장합니다. 예를 들어, "FREQ=YEARLY;BYMONTH=1,2"는 연간 반복 설정 내의 일 수를 1(BYMONTH 규칙 부분이 없는 경우)에서 2로 증가시킵니다.

여러 개의 BYxxx 규칙 부분이 지정된 경우 지정된 FREQ 및 INTERVAL 규칙 부분을 평가한 후 다음 순서로 현재 평가된 발생 집합에 BYxxx 규칙 부분을 적용합니다: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR, BYMINUTE, BYSECOND 및 BYSETPOS를 평가한 다음 COUNT 및 UNTIL을 평가합니다.

아래 표에는 FREQ 규칙 부분 값에 대한 BYxxx 규칙 부분 확장 또는 제한 동작의 종속성이 요약되어 있습니다.

"N/A"라는 용어는 해당 BYxxx 규칙 부분을 해당 FREQ 값과 함께 사용하지 않아야 함을 의미합니다.

BYDAY는 FREQ 값에 따라 몇 가지 특별한 동작이 있으며, 이는 표 아래의 별도 메모에 설명되어 있습니다.

+----------+--------+--------+-------+-------+------+-------+------+
|          |SECONDLY|MINUTELY|HOURLY |DAILY  |WEEKLY|MONTHLY|YEARLY|
+----------+--------+--------+-------+-------+------+-------+------+
|BYMONTH   |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYWEEKNO  |N/A     |N/A     |N/A    |N/A    |N/A   |N/A    |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYYEARDAY |Limit   |Limit   |Limit  |N/A    |N/A   |N/A    |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYMONTHDAY|Limit   |Limit   |Limit  |Limit  |N/A   |Expand |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYDAY     |Limit   |Limit   |Limit  |Limit  |Expand|Note 1 |Note 2|
+----------+--------+--------+-------+-------+------+-------+------+
|BYHOUR    |Limit   |Limit   |Limit  |Expand |Expand|Expand |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYMINUTE  |Limit   |Limit   |Expand |Expand |Expand|Expand |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYSECOND  |Limit   |Expand  |Expand |Expand |Expand|Expand |Expand|
+----------+--------+--------+-------+-------+------+-------+------+
|BYSETPOS  |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Limit |
+----------+--------+--------+-------+-------+------+-------+------+
Note
Note 1

BYMONTHDAY가 있는 경우 제한, 그렇지 않은 경우 월별 특별 확장.

Note
Note 2

BYYEARDAY 또는 BYMONTHDAY가 있는 경우 한도, BYWEEKNO가 있는 경우 매주 특별 확장, BYMONTH가 있는 경우 매월 특별 확장, 그 외에는 매년 특별 확장입니다.

다음은 여러 BYxxx 규칙 부분을 평가하는 예제입니다.

DTSTART;TZID=America/New_York:19970105T083000
RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;
 BYMINUTE=30

먼저 "INTERVAL=2"를 "FREQ=YEARLY"에 적용하여 "격년"에 도달합니다. 그런 다음 "BYMONTH=1"을 적용하여 "격년 1월마다"에 도달합니다. 그런 다음 "BYDAY=SU"를 적용하여 "격년 1월 매주 일요일"에 도달합니다. 그런 다음 "BYHOUR=8,9"를 적용하여 "격년 1월의 매주 일요일 오전 8시와 오전 9시에 도착"합니다. 그런 다음 "BYMINUTE=30"을 적용하여 "격년 1월 매주 일요일 오전 8시 30분과 오전 9시 30분에 도착"하도록 합니다. 그런 다음 "RRULE"의 정보가 없기 때문에 두 번째는 "DTSTART"에서 파생되어 "격년 1월의 매주 일요일 오전 8:30:00 및 오전 9:30:00"로 끝납니다. 마찬가지로 BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY 또는 BYMONTH 규칙 부분이 누락된 경우 "DTSTART" 속성에서 적절한 분, 시간, 일 또는 월을 검색할 수 있습니다.

지정된 시간대에 대해 반복 인스턴스의 계산된 로컬 시작 시간이 존재하지 않거나 두 번 이상 발생하는 경우, 반복 인스턴스의 시간은 섹션 3.3.5에 지정된 대로 해당 날짜와 시간을 설명하는 명시적 DATE-TIME 값과 동일한 방식으로 해석됩니다.

이 값 유형에 대한 추가 콘텐츠 값 인코딩(즉, BACKSLASH 문자 인코딩, 3.3.11절 참조)은 정의되어 있지 않습니다.

Example

다음은 격일로 발생하는 10개의 발생을 지정하는 규칙입니다:

FREQ=DAILY;COUNT=10;INTERVAL=2

섹션 3.8.5.3에 명시된 다른 예가 있습니다.

3.3.11. Text

Value Name

TEXT

3.3.12. Time

Value Name

TIME

3.3.13. URI

Value Name

URI

3.3.14. UTC offset

Value Name

UTC-OFFSET

Purpose

이 값 유형은 UTC에서 현지 시간으로의 오프셋이 포함된 속성을 식별하는 데 사용됩니다.

Format Definition

이 값 유형은 다음 표기법으로 정의됩니다:

utc-offset = time-numzone

time-numzone = ("+" / "-") time-hour time-minute [time-second]
Description

positive UTC offsets(즉, UTC보다 앞당김)의 경우 반드시 PLUS SIGN 문자를 지정해야 합니다. negative UTC offsets(즉, UTC보다 뒤처짐)의 경우 HYPHEN-MINUS 문자를 지정해야 합니다. "-0000" 및 "-000000" 값은 허용되지 않습니다. time-second가 있는 경우 60이 아니어야 하며, 없는 경우 기본값은 0입니다.

이 값 유형에 대한 추가 콘텐츠 값 인코딩(예: BACKSLASH 문자 인코딩, 섹션 3.3.11 참조)은 정의되어 있지 않습니다.

Example

뉴욕(UTC보다 5시간 늦음)과 제네바(UTC보다 1시간 빠름)의 표준 시간에 대해 다음과 같은 UTC 오프셋이 제공됩니다:

-0500
+0100

3.4. iCalendar Object

캘린더 및 스케줄링 코어 객체는 캘린더 및 스케줄링 정보의 모음입니다. 일반적으로 이 정보는 단일 iCalendar 개체가 있는 iCalendar 스트림으로 구성됩니다. 그러나 여러 개의 iCalendar 개체를 순차적으로 함께 그룹화하여 iCalendar 스트림에 포함시킬 수 있습니다. iCalendar 개체의 첫 번째 줄과 마지막 줄에는 반드시 한 쌍의 iCalendar 개체 구분자 문자열이 포함되어야 합니다. iCalendar 스트림의 구문은 다음과 같습니다:

icalstream = 1*icalobject

icalobject = "BEGIN" ":" "VCALENDAR" CRLF
             icalbody
             "END" ":" "VCALENDAR" CRLF

다음은 iCalendar 객체의 간단한 예입니다:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:19970610T172345Z-AF23B2@example.com
DTSTAMP:19970610T172345Z
DTSTART:19970714T170000Z
DTEND:19970715T040000Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

3.5. Property

속성은 캘린더 객체 또는 캘린더 구성요소를 설명하는 개별 속성의 정의입니다. 속성은 3.1절에 정의된 "내용선" 표기법에 의해 정의된 형식을 취합니다.

다음은 속성의 예입니다:

DTSTART:19960415T133000Z

이 메모에서는 iCalendar 개체 내에서 속성의 순서를 지정하지 않습니다.

속성 이름, 매개변수 이름 및 열거된 매개변수 값은 대소문자를 구분하지 않습니다. 예를 들어, 속성 이름 "DUE"는 "due" 및 "Due"와 동일하며, DTSTART;TZID=America/New_York:19980714T120000DtStart;TzID=America/New_York:19980714T120000 과 동일합니다.

3.6. Calendar Components

3.6.1. Event Component

3.6.2. To-Do Component

3.6.3. Journal Component

3.6.4. Free/Busy Component

  • 컴포넌트명: VFREEBUSY

  • 목적: free/busy time 요청 혹은 응답과 publish된 busy time 셋을 설명하는 컴포넌트 속성들의 그룹을 제공한다.

  • 포맷 정의

    freebusyc  = "BEGIN" ":" "VFREEBUSY" CRLF
                 fbprop
                 "END" ":" "VFREEBUSY" CRLF
    
    fbprop     = *(
                 ;
                 ; The following are REQUIRED,
                 ; but MUST NOT occur more than once.
                 ;
                 dtstamp / uid /
                 ;
                 ; The following are OPTIONAL,
                 ; but MUST NOT occur more than once.
                 ;
                 contact / dtstart / dtend /
                 organizer / url /
                 ;
                 ; The following are OPTIONAL,
                 ; and MAY occur more than once.
                 ;
                 attendee / comment / freebusy / rstatus / x-prop /
                 iana-prop
                 ;
                 )
  • 설명

    • "VFREEBUSY" 캘린더 컴포넌트는 free/busy time 정보의 요청, 요청에 대한 응답, busy time 정보를 게시하는 셋을 표현하는 컴포넌트 속성의 그룹이다.

    • free/busy time 정보 요청할 때 각 프로퍼티는 다음과 같다.

      • "ATTENDEE" 프로퍼티는 free/busy time이 요청되는 캘린더 유저를 나타낸다.

      • "ORGANIZER" 프로퍼티는 free/busy time을 요청하는 캘린더 유저를 나타낸다.

      • "DTSTART", "DTEND" 프로퍼티는 free/busy time이 요청되는 시간 window를 나타낸다.

      • "UID", "DTSTAMP" 프로퍼티는 여러 약속 있음/없음 시간 요청들의 적절한 순서를 지원하도록 기술한다.

    • 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.

    • The recurrence properties ("RRULE", "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.

  • 예시

    BEGIN:VFREEBUSY
    UID:19970901T082949Z-FA43EF@example.com
    ORGANIZER:mailto:jane_doe@example.com
    ATTENDEE:mailto:john_public@example.com
    DTSTART:19971015T050000Z
    DTEND:19971016T050000Z
    DTSTAMP:19970901T083000Z
    END:VFREEBUSY
    busy time 정보 요청의 응답에 사용되는 "VFREEBUSY" 캘린더 컴포넌트 예시
    BEGIN:VFREEBUSY
    UID:19970901T095957Z-76A912@example.com
    ORGANIZER:mailto:jane_doe@example.com
    ATTENDEE:mailto:john_public@example.com
    DTSTAMP:19970901T100000Z
    FREEBUSY:19971015T050000Z/PT8H30M,
     19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
    URL:http://example.com/pub/busy/jpublic-01.ifb
    COMMENT:This iCalendar file contains busy time information for
     the next three months.
    END:VFREEBUSY
    busy time 정보를 게시하는데 사용되는 "VFREEBUSY" 캘린더 컴포넌트 예시
    BEGIN:VFREEBUSY
    UID:19970901T115957Z-76A912@example.com
    DTSTAMP:19970901T120000Z
    ORGANIZER:jsmith@example.com
    DTSTART:19980313T141711Z
    DTEND:19980410T141711Z
    FREEBUSY:19980314T233000Z/19980315T003000Z
    FREEBUSY:19980316T153000Z/19980316T163000Z
    FREEBUSY:19980318T030000Z/19980318T040000Z
    URL:http://www.example.com/calendar/busytime/jsmith.ifb
    END:VFREEBUSY

3.6.5. Time Zone Component

3.6.6. Alarm Component

3.7. Calendar Properties

3.7.1. Calendar Scale

3.7.2. Method

3.7.3. Product Identifier

3.7.4. Version

3.8. Component Properties

3.8.1. Descriptive Component Properties

3.8.1.1. Attachment
3.8.1.2. Categories
3.8.1.3. Classification
3.8.1.4. Comment
3.8.1.5. Description
3.8.1.6. Geographic Position
3.8.1.7. Location
3.8.1.8. Percent Complete
3.8.1.9. Priority
3.8.1.10. Resources
3.8.1.11. Status
3.8.1.12. Summary

3.8.2. Date and Time Component Properties

3.8.2.1. Date-Time Completed
3.8.2.2. Date-Time End
3.8.2.3. Date-Time Due
3.8.2.4. Date-Time Start
3.8.2.5. Duration
3.8.2.6. Free/Busy Time
3.8.2.7. Time Transparency

3.8.3. Time Zone Component Properties

3.8.3.1. Time Zone Identifier
3.8.3.2. Time Zone Name
3.8.3.3. Time Zone Offset From
3.8.3.4. Time Zone Offset To
3.8.3.5. Time Zone URL

3.8.4. Relationship Component Properties

3.8.4.1. Attendee
3.8.4.2. Contact
3.8.4.3. Organizer
3.8.4.4. Recurrence ID
3.8.4.6. Uniform Resource Locator
3.8.4.7. Unique Identifier

3.8.5. Recurrence Component Properties

3.8.5.1. Exception Date-Times
3.8.5.2. Recurrence Date-Times
3.8.5.3. Recurrence Rule

Property Name

RRULE

Value Name

RECUR

Purpose: 이 속성은 반복 이벤트, 할 일, 업무 일지 또는 표준 시간대 정의에 대한 규칙 또는 반복 패턴을 정의합니다.

Property Parameters: IANA 및 비표준 속성 매개변수를 이 속성에 지정할 수 있습니다.

Conformance: 이 프로퍼티는 반복되는 "VEVENT", "VTODO" 및 "VJOURNAL" 캘린더 컴포넌트와 "VTIMEZONE" 캘린더 컴포넌트의 "STANDARD" 및 "DAYLIGHT" 하위 컴포넌트에서 지정할 수 있습니다. 그러나, 2번 이상 지정되서는 안됩니다. 여러 "RRULE" 속성으로 생성된 recurrence set은 정의되지 않았습니다.

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

rrule      = "RRULE" rrulparam ":" recur CRLF

rrulparam  = *(";" other-param)

Description:

예시:

Note
Eastern Time(ET): EST and EDT
EST

Eastern Standard Time. GMT-5

EDT

Eastern Daylight Time. GMT-4

'1997/09/02 09:00:00’부터 매일 총 10번 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=DAILY;COUNT=10

==> (1997 9:00 AM EDT) September 2-11
'1997/09/02 09:00:00’부터 '1997/12/24’까지 매일 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=DAILY;UNTIL=19971224T000000Z

==> (1997 9:00 AM EDT) September 2-30;October 1-25
    (1997 9:00 AM EST) October 26-31;November 1-30;December 1-23
'1997/09/02 09:00:00’부터 격일로 영원히 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=DAILY;INTERVAL=2

==> (1997 9:00 AM EDT) September 2,4,6,8...24,26,28,30;
                       October 2,4,6...20,22,24
    (1997 9:00 AM EST) October 26,28,30;
                       November 1,3,5,7...25,27,29;
                       December 1,3,...
'1997/09/02 09:00:00’부터 10일마다 총 5번 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5

==> (1997 9:00 AM EDT) September 2,12,22;
                       October 2,12
'1998/01/01 09:00:00’부터 매년 1월내내 3년동안 반복
DTSTART;TZID=America/New_York:19980101T090000

RRULE:FREQ=YEARLY;UNTIL=20000131T140000Z;
 BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA
or
RRULE:FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1

==> (1998 9:00 AM EST)January 1-31
    (1999 9:00 AM EST)January 1-31
    (2000 9:00 AM EST)January 1-31
'1997/09/02 09:00:00’부터 매주 총 10번 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=WEEKLY;COUNT=10

==> (1997 9:00 AM EDT) September 2,9,16,23,30;October 7,14,21
    (1997 9:00 AM EST) October 28;November 4
'1997/09/02 09:00:00’부터 '1997/12/24’까지 매주 반복
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z

==> (1997 9:00 AM EDT) September 2,9,16,23,30;
                       October 7,14,21
    (1997 9:00 AM EST) October 28;
                       November 4,11,18,25;
                       December 2,9,16,23

4. iCalendar Object Examples

다음 예는 이 콘텐츠 유형과 일치하는 예시적인 iCalendar 객체의 정보 소스로 제공됩니다.

다음 예는 1996년 9월 18일 오후 2시 30분(UTC)에 시작하여 1996년 9월 20일 오후 10시(UTC)에 종료되는 3일간의 회의를 지정합니다.

BEGIN:VCALENDAR
PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:19960704T120000Z
UID:uid1@example.com
ORGANIZER:mailto:jsmith@example.com
DTSTART:19960918T143000Z
DTEND:19960920T220000Z
STATUS:CONFIRMED
CATEGORIES:CONFERENCE
SUMMARY:Networld+Interop Conference
DESCRIPTION:Networld+Interop Conference
  and Exhibit\nAtlanta World Congress Center\n
 Atlanta\, Georgia
END:VEVENT
END:VCALENDAR

다음 예는 1998년 3월 12일 오전 8시 30분(EST)에 시작하여 1998년 3월 12일 오전 9시 30분(EST)에 끝나는 그룹 예약 미팅을 지정합니다. 'Organizer’가 그룹 내 한 명 이상의 캘린더 사용자와 미팅을 예약했습니다. 미국 동부에 대한 시간대 지정이 지정되었습니다.

BEGIN:VCALENDAR
PRODID:-//RDU Software//NONSGML HandCal//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:STANDARD
DTSTART:19981025T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19990404T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:19980309T231000Z
UID:guid-1.example.com
ORGANIZER:mailto:mrbig@example.com
ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
mailto:employee-A@example.com
DESCRIPTION:Project XYZ Review Meeting
CATEGORIES:MEETING
CLASS:PUBLIC
CREATED:19980309T130000Z
SUMMARY:XYZ Project Review
DTSTART;TZID=America/New_York:19980312T083000
DTEND;TZID=America/New_York:19980312T093000
LOCATION:1CP Conference Room 4350
END:VEVENT
END:VCALENDAR

다음은 "text/calendar" 콘텐츠 유형으로 구성된 단일 본문 부분으로 구성된 MIME 메시지로 전달된 iCalendar 객체의 예시입니다.

TO:jsmith@example.com
FROM:jdoe@example.com
MIME-VERSION:1.0
MESSAGE-ID:<id3@example.com>
CONTENT-TYPE:text/calendar; method="xyz"; component="VEVENT"

BEGIN:VCALENDAR
METHOD:xyz
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VEVENT
DTSTAMP:19970324T120000Z
SEQUENCE:0
UID:uid3@example.com
ORGANIZER:mailto:jdoe@example.com
ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com
DTSTART:19970324T123000Z
DTEND:19970324T210000Z
CATEGORIES:MEETING,PROJECT
CLASS:PUBLIC
SUMMARY:Calendaring Interoperability Planning Meeting
DESCRIPTION:Discuss how we can test c&s interoperability\n
using iCalendar and other IETF standards.
LOCATION:LDB Lobby
ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/
conf/bkgrnd.ps
END:VEVENT
END:VCALENDAR

다음은 1998년 4월 15일에 마감되는 to-do의 예입니다. to-do가 완료될 것으로 예상되는 전날 정오에 캘린더 사용자에게 이를 알려주는 오디오 알람이 지정되어 있으며 매시간마다 4번씩 추가로 반복됩니다. 이 to-do 정의는 처음 생성된 이후 두 번 수정되었습니다.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VTODO
DTSTAMP:19980130T134500Z
SEQUENCE:2
UID:uid4@example.com
ORGANIZER:mailto:unclesam@example.com
ATTENDEE;PARTSTAT=ACCEPTED:mailto:jqpublic@example.com
DUE:19980415T000000
STATUS:NEEDS-ACTION
SUMMARY:Submit Income Taxes
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:19980403T120000Z
ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio-
 files/ssbanner.aud
REPEAT:4
DURATION:PT1H
END:VALARM
END:VTODO
END:VCALENDAR

다음은 저널 항목의 예입니다:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VJOURNAL
DTSTAMP:19970324T120000Z
UID:uid5@example.com
ORGANIZER:mailto:jsmith@example.com
STATUS:DRAFT
CLASS:PUBLIC
CATEGORIES:Project Report,XYZ,Weekly Meeting
DESCRIPTION:Project xyz Review Meeting Minutes\n
 Agenda\n1. Review of project version 1.0 requirements.\n2.
 Definition
of project processes.\n3. Review of project schedule.\n
Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was
 decided that the requirements need to be signed off by
 product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account for scheduled holidays
  and employee vacation time. Check with HR for specific
  dates.\n-New schedule will be distributed by Friday.\n-
 Next weeks meeting is cancelled. No meeting until 3/23.
END:VJOURNAL
END:VCALENDAR

다음은 게시된 바쁜 시간 정보의 예입니다. iCalendar 개체는 네트워크 리소스 http://www.example.com/calendar/busytime/jsmith.ifb 에 배치될 수 있습니다.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
ORGANIZER:mailto:jsmith@example.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.example.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
END:VCALENDAR

6. Internationalization Considerations

7. Security Considerations

8. IANA Considerations

8.1. iCalendar Media Type Registration

8.2. New iCalendar Elements Registration

8.3. Initial iCalendar Elements Registries

8.3.1. Methods Registry

이 문서에는 "METHOD" 속성에 대한 값이 정의되어 있지 않습니다.

9. Acknowledgments

10. References

Appendix A: Differences from RFC 2445

이 부록에는 RFC 2445의 인터넷 캘린더 및 스케줄링 핵심 객체 사양에서 변경된 사항의 목록이 포함되어 있습니다.

A.1. New Restrictions

  1. ."DTSTART" 속성은 지정된 경우 반복 규칙과 동기화되어야 합니다.

  2. "RRULE" 속성은 컴포넌트에서 두 번 이상 발생하지 않아야 합니다.

  3. "DTSTART" 속성이 DATE 값으로 지정되어 있는 경우 "RRULE" 속성에 BYHOUR, BYMINUTE, BYSECOND 규칙 부분이 지정되지 않아야 합니다.

  4. "DTEND" 또는 "DUE" 속성의 값 유형은 "DTSTART" 속성의 값 유형과 반드시 일치해야 합니다.

  5. "DURATION" 속성은 더 이상 "VFREEBUSY" 구성 요소에 표시할 수 없습니다.

A.2. Restrictions Removed

  1. 반복 규칙과 함께 사용할 때 "DTSTART" 및 "DTEND" 속성을 더 이상 현지 시간 및 표준 시간대 참조가 있는 날짜로 지정할 필요가 없습니다.

A.3. Deprecated Features

  1. 컴포넌트에서 더 이상 "EXRULE" 속성을 지정할 수 없습니다.

  2. 더 이상 "RANGE" 매개변수와 함께 "THISANDPRIOR" 값을 사용할 수 없습니다.

  3. "PROCEDURE" 값은 더 이상 "ACTION" 속성과 함께 사용할 수 없습니다.

  4. 값 유형 RECUR은 더 이상 쉼표로 구분된 값 목록으로 여러 값을 지정할 수 없습니다.

  5. RECUR 값 유형의 속성(예: "RRULE")에 더 이상 X-명 규칙 부분을 지정할 수 없습니다. 대신 RECUR 값 유형 속성에는 X-파람을 사용할 수 있습니다.