Название, место, дата и время, часовой пояс, повторение, приглашённые, напоминания и заметки — затем скачайте файл .ics или откройте его прямо в календаре. Также можно вставить расписание или прикрепить документ либо фотографию, чтобы создать сразу несколько событий.

Что такое jCal и чем он отличается от файла .ics?

jCal — это iCalendar, записанный в формате JSON, стандартизированный как RFC 7265 в 2014 году. Он содержит точно такие же данные, что и файл .ics — те же свойства, параметры и компоненты — но в виде вложенных массивов, а не объектов, поскольку компонент может повторять свойство, а порядок может иметь значение. Календарь — это ["vcalendar", [properties], [components]], каждое свойство — это [name, parameters, valueType, value], поэтому SUMMARY:Standup становится ["summary", {}, "text", "Standup"]. Это не то же самое, что schema.org Event в формате JSON-LD, который описывает событие для поисковых систем и сохраняет гораздо меньше данных. ICS Maker создаёт .ics и jCal из единой модели события, а не путём преобразования одного в другое, поэтому эти два формата не могут расходиться в том, что представляет собой событие.

Структура

RFC 7265 отображает iCalendar в виде массивов, а не объектов, поскольку в календаре важны порядок и повторяемость, а объекты JSON не дают ни того, ни другого. Календарь — это ["vcalendar", [properties], [components]], а каждое свойство — это [name, parameters, valueType, value] — имя в нижнем регистре, параметры в виде объекта, тип — один из типов значений RFC 5545.

Так, SUMMARY:Standup становится ["summary", {}, "text", "Standup"], а начало события с указанием часового пояса становится ["dtstart", {"tzid":"Europe/London"}, "date-time", "2026-08-15T09:00:00"]. Дата и время записываются здесь в формате ISO, а не в компактной записи iCalendar, а часовой пояс переносится в параметр.

Зачем это нужно

iCalendar — это текстовый формат со свёрткой строк, правилами экранирования и окончаниями строк CRLF, и корректный разбор такого формата — задача сложнее, чем кажется на первый взгляд. jCal передаёт ту же самую семантику — часовые пояса, правила повторения, напоминания, участников — любому приложению, которое уже понимает JSON, без необходимости писать парсер. Это отличается от задачи Event от schema.org, который эта страница также может создавать: JSON-LD описывает событие для поисковой системы и сводит к минимуму почти всё, что требуется календарю.

Как эта страница генерирует его

Оба формата создаются из одного и того же события, а не преобразуются один из другого. Конвертер унаследовал бы все решения по экранированию из текстовой формы, а значения в jCal явно не экранированы — JSON выполняет собственное экранирование. Создание обоих форматов из единой модели означает, что они не могут расходиться в том, что представляет собой событие — только в том, как оно записано.

Вопросы

Что такое jCal?
jCal — это формат JSON для iCalendar, стандартизированный как RFC 7265 в 2014 году. Он представляет точно такие же данные, что и файл .ics — те же свойства, параметры и компоненты — с помощью вложенных массивов JSON, поэтому его можно преобразовывать в обоих направлениях без потери смысла.
Является ли jCal тем же самым, что JSON-LD или schema.org Event?
Нет. jCal — это полное отображение iCalendar, поэтому он содержит правила повторения, часовые пояса, напоминания и статус участия участников. schema.org Event в формате JSON-LD — это описание события для поисковых систем и других программ чтения, и оно намеренно сохраняет гораздо меньше данных. Этот конструктор создаёт оба формата из одного и того же события.
Почему jCal использует массивы вместо объектов?
Потому что компонент календаря может содержать одно и то же свойство несколько раз — несколько участников, несколько дат исключений — и порядок может иметь значение. Объект JSON с ключами по имени свойства не смог бы представить ни то, ни другое, поэтому RFC 7265 использует позиционные массивы.
Что читает jCal?
Это узкоспециализированный формат, хорошо поддерживаемый в библиотеках календарей JavaScript, таких как ical.js, и доступный в нескольких серверных инструментах для работы с iCalendar. Основные приложения календарей по-прежнему ожидают .ics, поэтому используйте jCal между собственными системами, а людям передавайте файл .ics.