아이캘린더(iCalendar)는 일정과 할 일, 일지, 비어 있는 시간 등의 정보를 교환하는 데이터 형식이다. RFC 5545가 기본 구조를 정의한다. 특정 달력 앱의 화면보다 서로 다른 프로그램이 같은 일정을 읽는 방법을 다룬다. ([RFC 5545](https://www.rfc-editor.org/rfc/rfc5545.html)) ## 일정 하나에 들어가는 정보 - 이벤트에는 시작과 종료, 제목, 고유 식별자 같은 항목이 들어간다. 제목이 같은 두 행사가 반드시 같은 일정은 아니므로 식별자를 별도로 사용한다. ([RFC 5545, VEVENT와 UID](https://www.rfc-editor.org/rfc/rfc5545.html)) - [[반복 일정]]은 같은 항목을 손으로 여러 번 복사하는 대신 반복 규칙과 예외 날짜로 표현할 수 있다. 매주 열리는 모임에서 한 주만 쉬는 경우가 한 예다. ([RFC 5545, RRULE·RDATE·EXDATE](https://www.rfc-editor.org/rfc/rfc5545.html)) - 고정된 시각을 전달하려면 UTC 또는 시간대가 지정된 현지 시각을 사용한다. 시간대 없는 시각은 이용자의 시간대에 따라 해석하는 떠다니는 시각이 될 수 있다. [[ISO 8601]]과 함께 읽되 아이캘린더가 정한 실제 문법을 확인해야 한다. ([RFC 5545, DATE-TIME](https://www.rfc-editor.org/rfc/rfc5545.html)) - 전시 일정을 내보내는 상황에서는 종일 행사와 특정 시각의 행사를 구분한다. 날짜만 필요한 일정에 임의의 자정 시각을 붙이면 시간대 처리까지 끌어들이게 된다. ## 기타 등등 - 이벤트의 `DTEND`는 종료 경계를 포함하지 않는다. 10월 1일부터 3일까지인 종일 행사의 종료 날짜는 10월 4일로 적는다. [출처](https://www.rfc-editor.org/rfc/rfc5545.html) - 내용의 한 줄은 줄바꿈을 제외하고 75옥텟을 넘기지 않도록 권고한다. 긴 줄을 접었다가 읽을 때 다시 펴는 규칙이 있으며, 이는 글자 수 75개와 같지 않다. [출처](https://www.rfc-editor.org/rfc/rfc5545.html) #표준 #데이터 #시간