Спецификация основных объектов календаря и планирования в Интернете ( iCalendar ) — это тип носителя , который позволяет пользователям хранить и обмениваться информацией календаря и планирования, такой как события, задачи, записи журнала и информация о занятости [1] , и вместе со связанными с ним стандартами является краеугольным камнем стандартизации и взаимодействия цифровых календарей у разных поставщиков. Файлы, отформатированные в соответствии со спецификацией, обычно имеют расширение .ics . С помощью вспомогательного программного обеспечения, такого как программа для чтения электронной почты или приложение календаря , получатели файла данных iCalendar могут легко ответить отправителю или предложить другую дату/время встречи. Формат файла указан в предлагаемом стандарте Интернета (RFC 5545) для обмена данными календаря. Стандарт и тип файла иногда называют «iCal», что было названием программы календаря Apple Inc. до 2012 года (см. iCal ), которая обеспечивает одну из реализаций стандарта.
iCalendar используется и поддерживается многими продуктами, включая:
Частично поддерживается Microsoft Outlook и Novell GroupWise .
iCalendar разработан так, чтобы быть независимым от транспортного протокола. Например, некоторые события могут быть отправлены по традиционной электронной почте или целые файлы календаря могут быть совместно использованы и отредактированы с помощью сервера WebDav или SyncML . Простые веб-серверы (использующие только протокол HTTP) часто используются для распространения данных iCalendar о событии и публикации времени занятости отдельного человека. Издатели могут встраивать данные iCalendar в веб-страницы с помощью hCalendar , микроформатного представления iCalendar 1:1 в семантическом (X) HTML .
iCalendar был впервые создан в 1998 году [3] рабочей группой по календарному планированию и составлению расписания Internet Engineering Task Force под председательством Аник Гангули из Open Text Corporation , а авторами его были Фрэнк Доусон из Lotus Development Corporation и Дерик Стенерсон из Microsoft Corporation . Файлы данных iCalendar представляют собой простые текстовые файлы с расширением .ics или .ifb (для файлов, содержащих только информацию о доступности). RFC 5545 заменил RFC 2445 в сентябре 2009 года и теперь определяет стандарт.
iCalendar в значительной степени основан на более раннем vCalendar от Internet Mail Consortium (IMC). [4] Он имеет расширение файла .vcs. После выпуска iCalendar, Internet Mail Consortium заявил, что он «надеется, что все разработчики vCalendar воспользуются этими новыми открытыми стандартами и сделают свое программное обеспечение совместимым как с vCalendar 1.0, так и с iCalendar». [5]
Memo "Calendar Access Protocol" ( RFC 4324) был первоначальной попыткой создания универсальной системы для создания календарей в реальном времени, но в конечном итоге был заброшен. Вместо этого iCalendar получил некоторое распространение для таких целей с такими специальными расширениями, как GroupDAV и CalDAV, появляющимися в качестве неформальных стандартов и получающими некоторое распространение как в клиентских, так и в серверных пакетах программного обеспечения .
Первая попытка упростить стандарты iCalendar, предпринятая рабочей группой IETF по календарю и планированию (ietf-calsify WG), завершилась в январе 2011 года, не получив одобрения. [6] [7] Затем работа была подхвачена рабочей группой по расширениям календаря (ietf-calext WG). [8]
Данные iCalendar имеют тип содержимого MIMEtext/calendar
. Расширение имени файла ics следует использовать для файлов, содержащих информацию о календаре и расписании, ifb — для файлов с информацией о свободном или занятом времени, соответствующей этому типу содержимого MIME. Эквивалентные коды типов файлов в средах операционной системы Apple Macintosh — iCal и iFBf .
По умолчанию iCalendar использует набор символов UTF-8 ; другой набор символов можно указать с помощью параметра MIME "charset" (если используемый метод передачи поддерживает MIME, например, Email или HTTP ). Каждая строка завершается символами CR + LF (в шестнадцатеричном формате : 0D0A ). Длина строк должна быть ограничена 75 октетами (не символами). Если элемент данных слишком длинный для размещения на одной строке, его можно продолжить на следующих строках, начав строки продолжения с символа пробела (в шестнадцатеричном формате: 20) или символа табуляции (в шестнадцатеричном формате: 09). Фактические переводы строк в элементах данных кодируются как обратная косая черта, за которой следует буква n или N (байты 5C 6E или 5C 4E в UTF-8).
Формат iCalendar предназначен для передачи данных на основе календаря, таких как события, и намеренно не описывает, что делать с этими данными. Таким образом, может потребоваться другое программирование для согласования того, что делать с этими данными. Сопутствующий стандарт, «iCalendar Transport-Independent Interoperability» (iTIP) (RFC 2446), определяет протокол обмена объектами iCalendar для совместного календарного планирования и планирования между «пользователями календаря» (CU), поддерживаемого «организатором», инициирующим обмен данными. Этот стандарт определяет такие методы, как PUBLISH
, REQUEST
, REPLY
, ADD
, CANCEL
, REFRESH
, COUNTER
(для согласования изменения записи) и DECLINE-COUNTER
(для отклонения встречного предложения). Другой сопутствующий стандарт, «iCalendar Message-based Interoperability Protocol (iMIP)» (RFC 2447), определяет стандартный метод реализации iTIP на стандартных интернет-транспортах на основе электронной почты. «Руководство по интернет-календарям» (RFC 3283) объясняет, как iCalendar взаимодействует с другими компьютерными языками календарей (текущими и будущими).
Элементом верхнего уровня в iCalendar является основной объект календаря и планирования, коллекция календарной и планировочной информации. Обычно эта информация состоит из одного объекта iCalendar. Однако несколько объектов iCalendar могут быть сгруппированы вместе. Первая строка должна быть BEGIN:VCALENDAR
, а последняя строка должна быть END:VCALENDAR
; содержимое между этими строками называется "icalbody". Тело должно включать свойства календаря " PRODID " и " VERSION ". Кроме того, оно должно включать по крайней мере один компонент календаря. [9]
VERSION:1.0
используется для указания того, что данные находятся в старом формате vCalendar. ВЕРСИЯ — 2.0 для текущего формата iCalendar по состоянию на 2016 год.
Тело объекта iCalendar (icalbody) содержит однострочные свойства календаря , которые применяются ко всему календарю, а также один или несколько блоков из нескольких строк, каждый из которых определяет компонент календаря, такой как событие, запись в журнале, будильник или один из нескольких других типов. Вот простой пример объекта iCalendar с одним календарем, содержащим один компонент календаря , событие " Bastille Day Party", начинающееся в 5 вечера 14 июля 1997 года и заканчивающееся в 4 утра следующего дня: [10]
НАЧАЛО:VCALENDARВЕРСИЯ:2.0PRODID:-//hacksw/handcal//NONSGML v1.0//ENНАЧАЛО:VEVENTUID:[email protected]ОРГАНИЗАТОР;CN=John Doe:MAILTO:[email protected]DTSTART:19970714T170000ZDTEND:19970715T040000ZРЕЗЮМЕ:Вечеринка в честь Дня взятия БастилииГЕО:48.85299;2.36885КОНЕЦ:VEVENTКОНЕЦ:VCALENDAR
Поле UID распределяет обновления при изменении запланированного события. Когда событие впервые генерируется, создается глобальный уникальный[email protected]
идентификатор. Если более позднее событие распространяется с тем же UID, оно заменяет исходный. Примером UID может быть , для 5-го собрания класса 131 во 2-м семестре в гипотетическом колледже. UID в стиле электронной почты теперь считаются плохой практикой, вместо этого рекомендуется использовать UUID . [11]
Наиболее распространенным представлением даты и времени является временная метка tz , например 20010911T124640Z с форматом <год (4 цифры)><месяц (2)><день (2)>T<час (2)><минута (2)><секунда (2)>Z для общей фиксированной длины 16 символов. Z указывает на использование UTC (ссылаясь на часовой пояс Zulu). [12] При использовании в свойствах DTSTART и DTEND начальное время включается, а конечное — нет. Это позволяет сделать конечное время события таким же, как и начало последовательного события, без перекрытия этих событий и потенциального создания (ложных) конфликтов планирования. [13]
В комплект входят:
iCalendar призван «предоставить определение общего формата для открытого обмена календарной и планировочной информацией через Интернет». Хотя функции, наиболее часто используемые пользователями, широко поддерживаются iCalendar, некоторые более продвинутые возможности имеют проблемы. Например, большинство поставщиков не поддерживают Журналы ( VJOURNAL ). У VTODO также были проблемы с конвертацией. [15]
Календарь iCalendar также несовместим с некоторыми негригорианскими календарями , такими как лунные календари, используемые в Израиле и Саудовской Аравии . Хотя существуют соответствия один к одному между григорианским и многими другими календарными шкалами, отсутствие определенных значений CALSCALE для этих календарей и ограничения в различных полях даты могут сделать нативную поддержку невозможной. Например, еврейский календарный год может содержать либо 12, либо 13 месяцев, а шкала календаря на основе японского императора содержит много эпох.
vCalendar и iCalendar поддерживают частные программные расширения с префиксом «X-», некоторые из которых широко используются.
Вот некоторые из них:
X-RECURRENCE-ID
: расширение vCalendar 1.0, которое имитирует iCalendar 2.0 RECURRENCE-ID (Nokia S60 3-го издания)X-EPOCAGENDAENTRYTYPE
: определяет тип клиентского календаряX-FUNAMBOL-AALARMOPTIONS
X-FUNAMBOL-ALLDAY
: Флаг события на весь деньX-MICROSOFT-CDO-ALLDAYEVENT
: Флаг событий Microsoft Outlook на весь деньX-MICROSOFT-CDO-BUSYSTATUS
: Информация о статусе Microsoft OutlookX-MICROSOFT-CDO-INTENDEDSTATUS
X-WR-CALNAME
: Отображаемое имя календаряX-WR-CALDESC
: Описание календаряX-WR-RELCALID
: Глобальный уникальный идентификатор календаря [16]X-WR-TIMEZONE
X-PUBLISHED-TTL
: Рекомендуемый интервал обновления для подписки на календарьX-ALT-DESC
: Используется для включения HTML-разметки в описание события. Стандартный тег DESCRIPTION должен содержать не-HTML-версию.X-FMTTYPE
, X-FILEDATE
, X-NAME
, X-CN
, X-STATUS
, X-ROLE
, X-SENTBY
, X-SYMBIAN-DTSTAMP
, X-METHOD
, X-RECURRENCE-ID
, X-EPOCALARM
, X-SYMBIAN-LUID
, X-EPOCAGENDAENTRYTYPE
[17]xCal — это XML- представление данных iCalendar, как определено в RFC 6321.
jCal — это JSON- представление данных iCalendar, как определено в RFC 7265.
hCalendar — это (x)HTML- представление подмножества данных iCalendar с использованием микроформатов .
hEvent — это HTML-представление подмножества данных iCalendar с использованием микроформатов, решающее некоторые проблемы доступности формата hCalendar.
{{cite web}}
: CS1 maint: другие ( ссылка )