Интернет Календаря и планирование Основной объект Спецификация ( Анонсы ) является тип носителя , который позволяет пользователям хранить и обмениваться календарями и информации планирования , такие как события, списки дел, записи журнала, и Free / Busy. [1] Файлы отформатированы в соответствии со спецификацией обычно имеет расширение в .ics
. С помощью вспомогательного программного обеспечения , такого как программа для чтения электронной почты или приложение календаря , получатели файла данных iCalendar могут легко ответить отправителю или предложить другую дату / время встречи. Формат файла указан в предлагаемом интернет-стандарте.(RFC 5545) для обмена календарными данными. [nb 1]
Расширение имени файла | .ical, .ics, .ifb, .icalendar |
---|---|
Тип интернет-СМИ | текст / календарь |
Тип формата | Обмен данными календаря |
Стандарт | RFC 5545 (обновлено: RFC 5546, RFC 6868, RFC 7529, RFC 7986) |
Открытый формат ? | да |
iCalendar используется и поддерживается многими продуктами, включая Google Calendar , Apple Calendar (ранее iCal), IBM Notes (ранее Lotus Notes), [2] Yahoo! Calendar , Evolution (программное обеспечение) , eM Client , расширение Lightning для Mozilla Thunderbird и SeaMonkey и частично Microsoft Outlook и Novell GroupWise .
iCalendar разработан так, чтобы не зависеть от транспортного протокола. Например, определенные события могут быть отправлены по традиционной электронной почте или целые файлы календаря могут быть опубликованы и отредактированы с помощью сервера WebDav или SyncML . Простые веб-серверы (использующие только протокол HTTP) часто используются для распространения данных iCalendar о событии и публикации времени занятости человека. Издатели могут встраивать данные iCalendar в веб-страницы, используя hCalendar , микроформатное представление 1: 1 iCalendar в семантическом (X) HTML .
История и дизайн
iCalendar был впервые создан в 1998 году [3] Рабочей группой по календарю и планированию Инженерной группы Интернета под председательством Аника Гангли из Open Text Corporation , авторами - Фрэнк Доусон из Lotus Development Corporation и Дерик Стенерсон из Microsoft Corporation . iCalendar в значительной степени основан на более ранней версии vCalendar Консорциума Интернет-почты (IMC). Файлы данных iCalendar - это простые текстовые файлы с расширением .ics
или .ifb
(только для файлов, содержащих информацию о доступности). RFC 5545 заменил RFC 2445 в сентябре 2009 года и теперь определяет стандарт.
Данные iCalendar имеют текст / календарь типа содержимого MIME .
Расширение имени файла ics
должно использоваться для файлов, содержащих информацию календаря и расписания, ifb
для файлов с информацией о свободном или занятом времени, совместимой с этим типом содержимого MIME. Эквивалентные коды типов файлов в операционных системах Apple Macintosh: iCal
и iFBf
.
По умолчанию iCalendar использует набор символов UTF-8 ; другой набор символов можно указать с помощью параметра MIME "charset" (если используемый метод передачи поддерживает MIME, например, электронная почта или HTTP ).
Каждая строка заканчивается CR + LF (в шестнадцатеричном формате : 0D0A). Длина строк должна быть ограничена 75 октетами (не символами). Если элемент данных слишком длинный для размещения в одной строке, его можно продолжить на следующих строках, начав строки продолжения с символа пробела (в шестнадцатеричном формате: 20) или символа табуляции (в шестнадцатеричном формате: 09).
Фактические переводы строки в элементах данных кодируются как обратная косая черта, за которой следует буква n или N (байты 5C 6E или 5C 4E в UTF-8).
Ограничения и будущее
Формат iCalendar разработан для передачи данных на основе календаря, таких как события, и намеренно не описывает, что делать с этими данными. Таким образом, может потребоваться другое программирование, чтобы договориться о том, что делать с этими данными. [nb 2]
iCalendar предназначен для «определения общего формата для открытого обмена календарной и календарной информацией через Интернет». Хотя функции, наиболее часто используемые пользователями, широко поддерживаются iCalendar, некоторые более продвинутые возможности имеют проблемы. Например, большинство поставщиков не поддерживают журналы (VJOURNAL). У VTODO также были проблемы с преобразованием. [№ 3]
календарь Анонсы является также не совместим с некоторыми не- григорианские календари , такие как лунные календари , используемые в Израиле и Саудовской Аравии . [№ 4]
Памятка «Протокол доступа к календарю» ( RFC 4324) была первой попыткой универсальной системы для создания календарей в реальном времени. В конечном итоге от этого протокола отказались, возможно, из-за чрезмерной сложности. Тем не менее, код на основе iCalendar, такой как GroupDAV и CalDAV , теперь чаще используется как в клиентских, так и в серверных пакетах программного обеспечения .
IETF «Календаря и Рабочая группа планирования» (IETF-calsify РГ) опубликовала дополнительные предлагаемые изменения к стандартам Анонсы [4] (как RFC-проекты / «Предлагаемые»), [5] , но по состоянию на январь 2011 года, группа имеет "закончился". [6] Работа подхвачена «Рабочей группой по расширению календаря» (ietf-calext WG). [7]
Технические характеристики
Основной объект
Элемент верхнего уровня в iCalendar - это основной объект «Календарь и планирование», представляющий собой набор информации о календаре и расписании. Обычно эта информация состоит из одного объекта iCalendar. Однако несколько объектов iCalendar можно сгруппировать.
Первая строка должна быть BEGIN:VCALENDAR
, и последняя строка должна быть END:VCALENDAR
; содержимое между этими строками называется «icalbody».
Тело ДОЛЖНО включать свойства календаря "PRODID" и "VERSION". Кроме того, он ДОЛЖЕН включать как минимум один календарный компонент. [8]
VERSION:1.0
использовался, чтобы указать, что данные находятся в старом формате vCalendar.
Тело объекта iCalendar (icalbody) состоит из списка свойств календаря и одного или нескольких компонентов календаря. Свойства календаря применяются ко всему календарю. Компоненты календаря - это несколько свойств календаря, которые создают схему (дизайн) календаря. Например, компонент календаря может указывать событие, список дел, запись в журнале, информацию о часовом поясе, информацию о свободном / занятом времени или будильник. Пустые строки не допускаются в некоторых версиях использования (календарь Google).
Вот простой пример [nb 5] объекта iCalendar, события "Вечеринка в честь Дня взятия Бастилии ", которое происходит с 14 июля 1997 года с 17:00 (UTC) по 15 июля 1997 года в 03:59:59 (UTC):
НАЧАТЬ: ВКАЛЕНДАРЬВЕРСИЯ: 2.0PRODID: - // hacksw / handcal // NONSGML v1.0 // ENНАЧАТЬ: ВЕВЕНТUID: [email protected]DTSTAMP: 19970714T170000ZОРГАНИЗАТОР; CN = John Doe: MAILTO: [email protected]DTSTART: 19970714T170000ZDTEND: 19970715T035959ZРЕЗЮМЕ: Вечеринка в честь Дня взятия БастилииGEO: 48.85299; 2.36885КОНЕЦ: ВЕВЕНТКОНЕЦ: ВКАЛЕНДАРЬ
В iCalendar можно использовать множество различных типов компонентов, как описано ниже. [№ 6]
События (ВЕВЕНТ)
VEVENT
описывает событие, для которого в календаре указано время. Обычно, когда пользователь принимает событие календаря, это время считается занятым. [nb 7] A VEVENT
может включать в себя, VALARM
который разрешает тревогу. Такие события имеют a, DTSTART
который устанавливает время начала, и a, DTEND
которое устанавливает время окончания. Если календарное событие повторяется, DTSTART
устанавливает начало первого события.
Код VALARM (напоминание за 1 день до этого):
НАЧАТЬ: ВАЛАРМТРИГГЕР: -PT1440MДЕЙСТВИЕ: ДИСПЛЕЙОПИСАНИЕ: НапоминаниеКОНЕЦ: ВАЛАРМ
VEVENT
также используется для календарных событий без определенного времени, таких как годовщины и ежедневные напоминания. [nb 8] Если пользователю необходимо отправить отмену для события, UID должен быть таким же, как исходное событие, а свойства компонента должны быть установлены на отмену.
МЕТОД: ОТМЕНАСТАТУС: ОТМЕНЕН
Для отправки сообщения UPDATE
о событии он UID
должен соответствовать оригиналу UID
. Другое свойство компонента, которое необходимо установить:
ПОСЛЕДОВАТЕЛЬНОСТЬ: <Количество обновлений>
Т.е. для первого обновления:
ПОСЛЕДОВАТЕЛЬНОСТЬ: 1
В Microsoft Outlook значок SUMMARY
соответствует записи «Тема» в форме «Встреча» и DESCRIPTION
описательному тексту под ней. Кроме того, для Outlook 2002 и Outlook 2003 требуются файлы a UID
и a DTSTAMP
.
Задачи (VTODO)
VTODO объясняет задачу, т. Е. Задачу или задание.
Не все календарные приложения распознают элементы VTODO. В частности, Outlook не экспортирует задачи как элементы VTODO и игнорирует элементы VTODO в импортированных календарях. [9]
Ниже приведен пример задачи, подлежащей выполнению 15 апреля 1998 г. [nb 5] Был установлен звуковой сигнал для напоминания пользователю календаря в полдень, за день до того, как ожидается завершение задачи, и повторение ежечасно. , четыре дополнительных раза. Элемент SEQUENCE показывает, что эта задача была изменена дважды с момента ее создания.
НАЧАТЬ: ВКАЛЕНДАРЬВЕРСИЯ: 2.0PRODID: - // ABC Corporation // NONSGML Мой продукт // ENНАЧАТЬ: VTODODTSTAMP: 19980130T134500ZПОСЛЕДОВАТЕЛЬНОСТЬ: 2UID: [email protected]ОБЯЗАНО: 19980415T235959СТАТУС: ПОТРЕБНОСТИ-ДЕЙСТВИЯРЕЗЮМЕ: подать подоходный налогНАЧАТЬ: ВАЛАРМДЕЙСТВИЕ: АУДИОТРИГГЕР: 19980414T120000ATTACH; FMTTYPE = audio / basic: http: //example.com/pub/audio- файлы / ssbanner.audПОВТОР: 4ПРОДОЛЖИТЕЛЬНОСТЬ: PT1HКОНЕЦ: ВАЛАРМКОНЕЦ: VTODOКОНЕЦ: ВКАЛЕНДАРЬ
Запись в журнале (VJOURNAL)
VJOURNAL - это запись в журнале. Они прикрепляют описательный текст к определенной календарной дате, могут использоваться для записи ежедневных записей о деятельности или достижениях или для описания прогресса с помощью соответствующей записи о делах. Компонент календаря "VJOURNAL" не занимает время в календаре, поэтому он не влияет на свободное или занятое время (как и ПРОЗРАЧНЫЕ записи). На практике несколько программ поддерживают записи VJOURNAL, хотя примеры существуют: программное обеспечение Plum Canary Chirp использует VTODO и VJOURNAL вместе. Также KOrganizer с рабочего стола KDE и Evolution с рабочего стола GNOME поддерживают VJOURNAL.
Ниже приводится пример записи в журнале: [nb 5]
НАЧАТЬ: ВКАЛЕНДАРЬВЕРСИЯ: 2.0PRODID: - // ABC Corporation // NONSGML Мой продукт // ENНАЧАТЬ: ЖУРНАЛDTSTAMP: 19970324T120000ZUID: [email protected]ОРГАНИЗАТОР: ПОЧТА: [email protected]СТАТУС: ПРОЕКТКЛАСС: ОБЩЕСТВЕННЫЙКАТЕГОРИИ: Отчет по проекту, XYZ, Еженедельная встречаОПИСАНИЕ: Протокол совещания по рассмотрению проекта xyz \ n Повестка дня \ n1. Обзор требований к версии 1.0 проекта. \ N2. Определение процессов проекта. \ n3. Обзор графика проекта. \ N Участники: Джон Смит \, Джейн Доу \, Джим Денди \ n-Это было решил, что требования должны быть подписаны маркетинг продукта. \ n-Процессы проекта были приняты. \ n - График проекта должен учитывать запланированные праздники и время отпуска сотрудника. Обратитесь в отдел кадров для конкретных даты. \ n-Новое расписание будет распространено к пятнице. \ n- Встреча на следующей неделе отменяется. Никаких встреч до 23 марта.КОНЕЦ: ЖУРНАЛКОНЕЦ: ВКАЛЕНДАРЬ
(Примечание: этот пример взят из RFC 2445 с исправлением изменения слова «CATEGORY» на «CATEGORIES», что является ошибкой в исходном RFC)
Свободное / занятое время (VFREEBUSY)
VFREEBUSY - это запрос свободного / занятого времени, ответ на запрос или опубликованный набор времени занятости. [ требуется разъяснение ] [№ 9]
Ниже приведен пример опубликованной информации о времени занятости: [nb 10]
НАЧАТЬ: ВКАЛЕНДАРЬВЕРСИЯ: 2.0PRODID: - // Программное обеспечение RDU // NONSGML HandCal // ENНАЧАТЬ: VFREEBUSYDTSTAMP: 20151013T080000ZUID: [email protected]ОРГАНИЗАТОР: ПОЧТА: [email protected]DTSTART: 19980313T141711ZDTEND: 19980410T141711ZБЕСПЛАТНЫЙ ПРОЦЕСС: 19980314T233000Z / 19980315T003000ZБЕСПЛАТНЫЙ ПРОЦЕСС: 19980316T153000Z / 19980316T163000ZБЕСПЛАТНЫЙ ПРОЦЕСС: 19980318T030000Z / 19980318T040000ZURL: http: //www.example.com/calendar/busytime/jsmith.ifbКОНЕЦ: VFREEBUSYКОНЕЦ: ВКАЛЕНДАРЬ
Другие типы компонентов
Другие типы компонентов включают VAVAILABILITY , VTIMEZONE (часовые пояса) и VALARM (будильники). Некоторые компоненты могут включать в себя другие компоненты (VALARM часто включается в другие компоненты). [№ 11]
Распространение обновлений
Поле UID рассылает обновления при изменении запланированного события. Когда событие создается впервые, создается глобальный уникальный идентификатор. Если более позднее событие распространяется с тем же UID, оно заменяет исходное. [№ 12]
Расширения календаря
vCalendar и iCalendar поддерживают частные программные расширения с префиксом «X-», некоторые из которых широко используются.
Некоторые из них включают:
- X-RECURRENCE-ID - расширение vCalendar 1.0, имитирующее iCalendar 2.0 RECURRENCE-ID (Nokia S60 3rd Edition)
- X-EPOCAGENDAENTRYTYPE - определяет тип календаря клиента
- X-FUNAMBOL-AALARMOPTIONS
- X-FUNAMBOL-ALLDAY - Флаг события на весь день
- X-MICROSOFT-CDO-ALLDAYEVENT - флаг события на весь день в Microsoft Outlook
- X-MICROSOFT-CDO-BUSYSTATUS - информация о состоянии Microsoft Outlook
- X-MICROSOFT-CDO-INTENDEDSTATUS
- X-WR-CALNAME - отображаемое имя календаря.
- X-WR-CALDESC - Описание календаря
- X-WR-RELCALID - глобальный уникальный идентификатор календаря [10]
- X-WR-TIMEZONE
- X-PUBLISHED-TTL - Рекомендуемый интервал обновления для подписки на календарь
- X-ALT-DESC - используется для включения разметки HTML в описание события. Стандартный тег DESCRIPTION должен содержать версию, отличную от HTML.
vCalendar 1.0
Дизайн iCalendar был основан на предыдущем формате файла vCalendar, созданном Консорциумом Интернет-почты (IMC). [11]
Вот пример информации в формате vCalendar:
НАЧАТЬ: ВКАЛЕНДАРЬВЕРСИЯ: 1.0НАЧАТЬ: ВЕВЕНТКАТЕГОРИИ: ВСТРЕЧИСТАТУС: ПРЕДВАРИТЕЛЬНЫЙDTSTART: 19960401T033000ZDTEND: 19960401T043000ZРЕЗЮМЕ: проверка вашего предложенияОПИСАНИЕ: Стив и Джон изучат новейшие материалы предложения.КЛАСС: ЧАСТНЫЙКОНЕЦ: ВЕВЕНТКОНЕЦ: ВКАЛЕНДАРЬ
Он имеет расширение файла .vcs. После выпуска iCalendar Консорциум Internet Mail заявил, что «надеется, что все разработчики vCalendar воспользуются преимуществами этих новых открытых стандартов и сделают свое программное обеспечение совместимым как с vCalendar 1.0, так и с iCalendar». [12]
Представления
xCal
xCal - это XML- представление данных iCalendar, как определено в RFC 6321 .
jCal
jCal - это представление данных iCalendar в формате JSON , как определено в RFC 7265 .
hCalendar
hCalendar - это (x) HTML- представление подмножества данных iCalendar с использованием микроформатов .
hEvent
hEvent - это HTML-представление подмножества данных iCalendar с использованием микроформатов, устраняющих некоторые проблемы доступности с форматом hCalendar.
Смотрите также
- Список приложений с поддержкой iCalendar
- CalDAV
- GroupDAV
- hCalendar
- Планирование OSID обеспечивает абстракцию программного интерфейса для использования протоколов календаря.
- визитная карточка
- xCal
- Webcal - неофициальная схема универсального идентификатора ресурса (URI)
- Zip файл
Заметки
- ^ Стандарт и тип файла иногда называют «iCal», что было названиемкалендарной программы Apple Inc. до 2012 года (см. ICal ), которая обеспечивает одну из реализаций стандарта.
- ^ Сопутствующий стандарт, «iCalendar, независимое от транспорта взаимодействие» ( iTIP ) (RFC 2446), определяет протокол для обмена объектами iCalendar для целей группового календаря и планирования между «пользователями календаря» (CU); тот, кто инициирует обмен данными, берет на себя роль «Организатора». Этот стандарт определяет такие методы, как PUBLISH, REQUEST, REPLY, ADD, CANCEL, REFRESH, COUNTER (для согласования изменения в записи) и DECLINE-COUNTER (для отклонения встречного предложения). Другой сопутствующий стандарт, «Протокол взаимодействия на основе сообщений iCalendar ( iMIP )» (RFC 2447), определяет стандартный метод для реализации iTIP на стандартных транспортных средствах электронной почты Интернета. В «Руководстве по Интернет-календарю» (RFC 3283) объясняется, как iCalendar взаимодействует с другим языком программирования календаря (текущим и будущим).
- ^ CalConnect, 2004
- ^ Хотя существует взаимно однозначное сопоставление между григорианской и многими другими календарными шкалами, отсутствие определенных значений CALSCALE для этих календарей и ограничения в различных полях даты могут сделать встроенную поддержку невозможной. Например, календарный годна иврите может содержать 12 или 13 месяцев, акалендарная шкала, основаннаяна японском императоре, содержит много эпох.
- ^ a b c Из RFC 2445
- ^ Обратите внимание, что Apple iCal и Microsoft Outlook используют дополнительные дескрипторы, как показано ниже, для предоставления дополнительной информации о календаре.
X-WR-CALNAME: Революционные партии
X-WR-CALDESC: Празднование различных революционных мероприятий.
X-WR-RELCALID: 3E26604A-50F4-4449-8B3E-E4F4932D05B5
X-WR-TIMEZONE: США / Тихоокеанский регион,
где X-WR-RELCALID - это UUID . - ^ Но событие можно установить как "ПРОЗРАЧНОЕ", чтобы изменить эту интерпретацию.
- ^ Эти события будут иметь
DATE
тип значения дляDTSTART
свойства вместо значения по умолчаниюDATE-TIME
, и не обязательно включатьDTEND
свойство. - ^ Как описано в RFC 2445:
При использовании для запроса информации о свободном / занятом времени свойство «ATTENDEE» указывает пользователей календаря, у которых запрашивается свободное / занятое время; свойство «ОРГАНИЗАТОР» указывает пользователя календаря, запрашивающего свободное / занятое время; свойства «DTSTART» и «DTEND» определяют временное окно, для которого запрашивается время свободного / занятого времени; свойства «UID» и «DTSTAMP» указаны для помощи в правильной последовательности множественных запросов времени занятости.
При использовании для ответа на запрос свободного / занятого времени свойство «ATTENDEE» указывает пользователя календаря, отвечающего на запрос свободного / занятого времени; свойство «ОРГАНИЗАТОР» указывает пользователя календаря, который изначально запрашивал свободное / занятое время; в свойстве FREEBUSY указывается информация о свободном / занятом времени (если она существует); а свойства «UID» и «DTSTAMP» указаны для помощи в правильной последовательности множественных ответов о времени занятости.
При использовании для публикации времени занятости свойство "ORGANIZER" указывает пользователя календаря, связанного с опубликованным временем занятости; свойства «DTSTART» и «DTEND» определяют инклюзивное временное окно, которое окружает информацию о времени занятости; свойство "FREEBUSY" указывает опубликованную информацию о времени занятости; а свойство «DTSTAMP» указывает дату / время создания объекта iCalendar.
- ^ Из RFC 2445 Объект iCalendar может быть размещен по некоторому URL-адресу с расширением ".ifb"
- ^ Некоторые компоненты часто определяются для поддержки других компонентов, определенных после них (таким образом часто используется VTIMEZONE). [ требуется разъяснение ]
- ^ Примером UID может быть "[email protected]" для 5-го собрания класса 131 во 2 семестре в гипотетическом колледже.
Рекомендации
- ^ Desruisseaux, Бернар, изд. (Сентябрь 2009 г.). «Спецификация основного объекта Интернет-календаря и планирования (iCalendar)» . Инженерная группа Интернета . Проверено 7 декабря 2018 .
- ^ «IBM Lotus Notes 8.5 iCalendar: взаимодействие, реализация и приложение» . IBM DeveloperWorks . Проверено 5 апреля 2015 .
- ^ «iCalendar.org» . Z Content . Проверено 28 марта 2018 .
- ^ «Упрощение (calsify) календарного и календарного планирования» . IETF . Проверено 5 апреля 2015 .
- ^ «Упрощение (calsify) календарного и календарного планирования» . IETF . Проверено 5 апреля 2015 .
- ^ Лир, Элиот (10 декабря 2010 г.). «конец рабочей группы calsify - не конец списка рассылки» . Список рассылки ietf-calsify . Проверено 5 апреля 2015 .
- ^ «Расширения календаря (calext)» . IETF . Проверено 1 декабря 2016 .
- ^ «[rfc5545] Раздел 3.6. Компоненты календаря» . Спецификация основного объекта Интернет-календаря и планирования . Дата обращения 1 июля 2020 .
- ^ «[RFC5546] Раздел 3.4 Методы для компонентов VTODO» . Сеть разработчиков Microsoft . Дата обращения 7 августа 2015 .
- ^ "[MS-OXCICAL]: Свойство: X-WR-RELCALID" . msdn.microsoft.com . Проверено 23 февраля 2016 .
- ^ «vCalendar: формат обмена электронным календарем и планированием, версия 1.0» . Консорциум Интернет-почты . 1996-09-18. Архивировано из оригинала на 2016-03-21 . Проверено 28 марта 2018 .
- ^ «Обмен личными данными - vCard и vCalendar» . Консорциум Интернет-почты . 2006-11-26. Архивировано из оригинала на 2015-09-06 . Проверено 28 февраля 2016 .
Внешние ссылки
- RFC 5545 Спецификация основного объекта Интернет-календаря и планирования (iCalendar) (заменяет RFC 2445)
- RFC 5546 iCalendar Transport-Independent Interoperability Protocol (iTIP) (заменяет RFC 2446)
- RFC 6047 Протокол взаимодействия на основе сообщений iCalendar (iMIP) (заменяет RFC 2447)
- RFC 6321 xCal: формат XML для iCalendar (представление XML iCalendar)
- RFC 6868 обновление форматов данных для включения определенных символов, запрещенных существующей спецификацией, в значения параметров
- RFC 7265 jCal: формат JSON для iCalendar
- RFC 7986 Новые свойства для iCalendar (дополнительные свойства к спецификации iCalendar)
- «Введение в Интернет-календарь и планирование» . CalConnect . 2011-10-20.
- «Обмен личными данными - vCard и vCalendar» . Консорциум Интернет-почты . Архивировано из оригинала на 2017-02-27. - Здесь описывается взаимосвязь vCard, vCalendar и iCalendar, а также содержится запрос IMC для разработчиков о поддержке как vCalendar, так и iCalendar.
- «Ресурсы iCalendar» . - Список ресурсов для iCalendar и связанных стандартов.