iKalender - iCalendar

iKalender
Dateinamenerweiterung
.ical, .ics, .ifb, .icalendar
Internet-Medientyp
Text/Kalender
Formattyp Kalenderdatenaustausch
Standard RFC  5545
(Aktualisiert von: RFC  5546 , RFC  6868 , RFC  7529 , RFC  7986 )
Offenes Format ? Jawohl
iCalendar-Komponenten und ihre Eigenschaften

Die Internet Calendaring and Scheduling Core Object Specification ( iCalendar ) ist ein Medientyp, der es Benutzern ermöglicht, Kalender- und Planungsinformationen wie Ereignisse, Aufgaben, Journaleinträge und Frei/Gebucht-Informationen zu speichern und auszutauschen. Dateien formatiert entsprechend der Spezifikation haben in der Regel eine Verlängerung von .ics. Mit unterstützender Software wie einem E-Mail-Reader oder einer Kalenderanwendung können Empfänger einer iCalendar-Datendatei dem Absender einfach antworten oder ein anderes Besprechungsdatum/eine andere Uhrzeit vorschlagen. Das Dateiformat ist in einem vorgeschlagenen Internetstandard (RFC 5545) für den Austausch von Kalenderdaten spezifiziert .

iCalendar wird von vielen Produkten verwendet und unterstützt, darunter Google Kalender , Apple Kalender (ehemals iCal), IBM Notes (ehemals Lotus Notes), Yahoo! Kalender , Evolution (Software) , eM Client , Lightning- Erweiterung für Mozilla Thunderbird und SeaMonkey sowie teilweise von Microsoft Outlook und Novell GroupWise .

iCalendar ist unabhängig vom Transportprotokoll. Zum Beispiel können bestimmte Ereignisse per herkömmlicher E-Mail gesendet oder ganze Kalenderdateien mit einem WebDav- Server oder SyncML geteilt und bearbeitet werden . Einfache Webserver (die nur das HTTP-Protokoll verwenden) werden oft verwendet, um iCalendar-Daten zu einem Ereignis zu verteilen und Stoßzeiten einer Person zu veröffentlichen. Herausgeber können iCalendar-Daten in Webseiten einbetten , indem sie hCalendar verwenden , eine 1:1- Mikroformat- Darstellung von iCalendar in semantischem (X) HTML .

Geschichte und Design

iCalendar wurde erstmals 1998 von der Calendaring and Scheduling Working Group der Internet Engineering Task Force unter dem Vorsitz von Anik Ganguly von Open Text Corporation erstellt und von Frank Dawson von Lotus Development Corporation und Derik Stenerson von Microsoft Corporation verfasst . iCalendar basiert stark auf dem früheren vCalendar des Internet Mail Consortium (IMC). iCalendar-Datendateien sind reine Textdateien mit der Erweiterung .ics oder .ifb(nur für Dateien mit Verfügbarkeitsinformationen). RFC 5545 ersetzte RFC 2445 im September 2009 und definiert nun den Standard.

iCalendar-Daten haben den MIME- Inhaltstyp text/calendar .

Die Dateinamenerweiterung von icsist für Dateien zu verwenden, die Kalender- und Planungsinformationen enthalten, ifbfür Dateien mit Informationen zu freien oder beschäftigten Zeiten, die mit diesem MIME-Inhaltstyp übereinstimmen. Die entsprechenden Dateitypcodes in Apple Macintosh Betriebssystemumgebungen sind iCalund iFBf.

iCalendar verwendet standardmäßig den UTF-8- Zeichensatz ; mit dem MIME-Parameter "charset" kann ein anderer Zeichensatz angegeben werden (sofern die verwendete Transportmethode MIME unterstützt, wie zB Email oder HTTP ).

Jede Zeile wird mit CR + LF (in hexadezimal : 0D0A) abgeschlossen. Zeilen sollten auf 75 Oktette (keine Zeichen) begrenzt sein. Wenn ein Datenelement zu lang ist, um in eine einzelne Zeile zu passen, kann es in den folgenden Zeilen fortgesetzt werden, indem die Fortsetzungszeilen mit einem Leerzeichen (in Hex: 20) oder einem Tabulatorzeichen (in Hex: 09) beginnen.

Tatsächliche Zeilenvorschübe in Datenelementen werden als umgekehrter Schrägstrich gefolgt von dem Buchstaben n oder N codiert (die Bytes 5C 6E oder 5C 4E in UTF-8).

Einschränkungen und Zukunft

Das iCalendar-Format wurde entwickelt, um kalenderbasierte Daten wie Ereignisse zu übertragen, und beschreibt absichtlich nicht, was mit diesen Daten zu tun ist. Daher kann eine andere Programmierung erforderlich sein, um auszuhandeln, was mit diesen Daten zu tun ist.

iCalendar soll "die Definition eines gemeinsamen Formats für den offenen Austausch von Kalender- und Termininformationen über das Internet bereitstellen". Während die von Benutzern am häufigsten verwendeten Funktionen von iCalendar weitgehend unterstützt werden, treten bei einigen erweiterten Funktionen Probleme auf. Beispielsweise unterstützen die meisten Anbieter keine Journals (VJOURNAL). VTODOs hatten auch Konvertierungsprobleme.

Der Kalender von iCalendar ist auch nicht mit einigen nicht- gregorianischen Kalendern kompatibel, wie den Mondkalendern, die in Israel und Saudi-Arabien verwendet werden .

Das Memo "Calendar Access Protocol" ( RFC 4324) war ein erster Versuch, ein universelles System zur Erstellung von Echtzeitkalendern zu erstellen, wurde aber schließlich aufgegeben. Stattdessen fand iCalendar eine gewisse Akzeptanz für solche Zwecke, wobei sich Ad-hoc- Erweiterungen wie GroupDAV und CalDAV als informelle Standards herausstellten und sowohl in Client- als auch in Server- Softwarepaketen eine gewisse Akzeptanz fanden .

Ein erster Versuch zur Vereinfachung der iCalendar-Standards durch die IETF "Calendaring and Scheduling Working Group" (ietf-calsify WG) endete im Januar 2011 ohne Annahme. Die Arbeit wurde dann von der „Arbeitsgruppe Kalendererweiterungen“ (ietf-calext WG) aufgenommen.

Technische Spezifikationen

Kernobjekt

Das oberste Element in iCalendar ist das Calendaring and Scheduling Core Object, eine Sammlung von Kalender- und Planungsinformationen. Normalerweise bestehen diese Informationen aus einem einzelnen iCalendar-Objekt. Es können jedoch mehrere iCalendar-Objekte gruppiert werden.

Die erste Zeile muss lauten BEGIN:VCALENDARund die letzte Zeile muss sein END:VCALENDAR; der Inhalt zwischen diesen Zeilen wird "icalbody" genannt.
Der Textkörper MUSS die Kalendereigenschaften "PRODID" und "VERSION" enthalten. Darüber hinaus MUSS es mindestens eine Kalenderkomponente enthalten.

VERSION:1.0 wurde verwendet, um anzugeben, dass die Daten im alten vCalendar-Format vorliegen.

Der Hauptteil des iCalendar-Objekts (der icalbody) enthält einzeilige Kalendereigenschaften , die für den gesamten Kalender gelten, sowie einen oder mehrere Blöcke mit mehreren Zeilen, die jeweils eine Kalenderkomponente definieren, z einer der anderen unten beschriebenen Typen. Hier ist ein einfaches Beispiel für ein iCalendar-Objekt mit einem einzelnen Kalender, der eine einzelne Kalenderkomponente enthält , eine " Bastille Day Party", die am 14. Juli 1997 um 17:00 Uhr beginnt und am folgenden Morgen um 4:00 Uhr endet.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T040000Z
SUMMARY:Bastille Day Party
GEO:48.85299;2.36885
END:VEVENT
END:VCALENDAR

Datums- und Uhrzeitformat

Die gebräuchlichste Darstellung von Datum und Uhrzeit ist ein tz-Zeitstempel wie 20010911T124640Zbeim Format <year (4 digits)><month (2)><day (2)>T<hour (2)><minute (2)><second (2)>Zfür eine feste Gesamtlänge von 16 Zeichen. Z die Verwendung zeigt UTC ( in Bezug auf seine „ Z ulu “ Zeitzone). Bei Verwendung in DTSTARTund DTEND-Eigenschaften sind die Startzeiten inklusive, die Endzeiten jedoch nicht. Dadurch kann die Endzeit eines Ereignisses mit dem Start eines aufeinanderfolgenden Ereignisses übereinstimmen, ohne dass sich diese Ereignisse überschneiden und möglicherweise (falsche) Planungskonflikte erzeugen.

Veranstaltungen (VEVENT)

VEVENTbeschreibt ein Ereignis, das eine geplante Zeitdauer in einem Kalender hat. Wenn ein Benutzer das Kalenderereignis akzeptiert, wird diese Zeit normalerweise als beschäftigt betrachtet. A VEVENTkann ein enthalten, VALARMdas einen Alarm ermöglicht. Solche Ereignisse haben eine, DTSTARTdie eine Startzeit festlegt, und eine, DTENDdie eine Endzeit festlegt. Wenn sich das Kalenderereignis wiederholt, DTSTARTwird der Beginn des ersten Ereignisses eingerichtet.

Ein VALARM-Code (Erinnerung 1 Tag vorher):

BEGIN:VALARM
TRIGGER:-PT1440M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM

VEVENTwird auch für Kalenderereignisse ohne bestimmte Zeit verwendet, wie zum Beispiel Jahrestage und tägliche Erinnerungen. Wenn der Benutzer eine Stornierung für ein Ereignis senden muss, sollte die UID mit der des ursprünglichen Ereignisses übereinstimmen und die Komponenteneigenschaften sollten auf "Abbrechen" eingestellt sein.

METHOD:CANCEL
STATUS:CANCELLED

Zum Versenden einer UPDATEfür eine Veranstaltung UIDsollte diese mit dem Original übereinstimmen UID. Die andere festzulegende Komponenteneigenschaft ist:

SEQUENCE:<Num of Update>

Dh für das erste Update:

SEQUENCE:1

In Microsoft Outlook SUMMARYentspricht das dem Eintrag "Betreff" im Formular "Termin" und DESCRIPTIONdem Beschreibungstext darunter. Darüber hinaus erfordern Outlook 2002 und Outlook 2003 a UIDund a DTSTAMP.

Aufgabe (VTODO)

VTODO erklärt ein To-Do-Item, dh ein Action-Item oder eine Aufgabe.

Nicht alle Kalenderanwendungen erkennen VTODO-Elemente. Insbesondere exportiert Outlook Aufgaben nicht als VTODO-Elemente und ignoriert VTODO-Elemente in importierten Kalendern.

Das Folgende ist ein Beispiel für eine Aufgabe, die am 15. April 1998 fällig ist. Ein akustischer Alarm wurde festgelegt, um den Kalenderbenutzer um 12 Uhr am Tag vor der Fertigstellung der Aufgabe zu erinnern und stündlich vier weitere Male zu wiederholen . Das SEQUENCE-Element zeigt an, dass diese Aufgabe seit ihrer ursprünglichen Erstellung zweimal geändert wurde.

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

Journaleintrag (VJOURNAL)

VJOURNAL ist ein Tagebucheintrag. Sie fügen beschreibenden Text zu einem bestimmten Kalenderdatum hinzu, können verwendet werden, um eine tägliche Aufzeichnung von Aktivitäten oder Leistungen aufzuzeichnen oder den Fortschritt mit einem zugehörigen To-Do-Eintrag zu beschreiben. Eine Kalenderkomponente "VJOURNAL" nimmt keine Zeit in einem Kalender in Anspruch, hat also keinen Einfluss auf freie oder beschäftigte Zeit (genau wie TRANSPARENTE Einträge). In der Praxis unterstützen nur wenige Programme VJOURNAL-Einträge, obwohl es Beispiele gibt: Die Chirp-Software von Plum Canary verwendet VTODO und VJOURNAL zusammen. Auch KOrganizer vom KDE-Desktop und Evolution vom GNOME- Desktop unterstützen VJOURNAL.

Das Folgende ist ein Beispiel für einen Journaleintrag:

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

(Hinweis: Dieses Beispiel stammt aus RFC 2445 mit der Korrektur der Änderung des Wortes 'CATEGORY' in 'CATEGORIES', was ein Fehler im ursprünglichen RFC ist)

Frei/Gebucht-Zeit (VFREEBUSY)

VFREEBUSY ist eine Anfrage nach Frei/Gebucht-Zeit, ist eine Antwort auf eine Anfrage oder ist ein veröffentlichter Satz von besetzter Zeit.

Im Folgenden finden Sie ein Beispiel für veröffentlichte Informationen zu Stoßzeiten:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
DTSTAMP:20151013T080000Z
UID:uid6@example.com
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

Andere Komponententypen

Andere Komponententypen sind VAVAILABILITY , VTIMEZONE (Zeitzonen) und VALARM (Alarme). Einige Komponenten können andere Komponenten enthalten (VALARM ist oft in anderen Komponenten enthalten).

Verteilen von Updates

Das UID-Feld verteilt Aktualisierungen, wenn sich ein geplantes Ereignis ändert. Beim erstmaligen Generieren des Ereignisses wird ein global eindeutiger Bezeichner erstellt. Wenn ein späteres Ereignis mit derselben UID verteilt wird, ersetzt es das ursprüngliche.

Kalendererweiterungen

vCalendar und iCalendar unterstützen private Softwareerweiterungen mit einem "X-"-Präfix, von denen einige häufig verwendet werden.

Einige davon sind:

  • X-RECURRENCE-ID - vCalendar 1.0-Erweiterung, die die iCalendar 2.0 RECURRENCE-ID nachahmt (Nokia S60 3rd Edition)
  • X-EPOCAGENDAENTRYTYPE - definiert den Kundenkalendertyp
  • X-FUNAMBOL-AALARMOPTIONEN
  • X-FUNAMBOL-ALLDAY - All Day Event Flag
  • X-MICROSOFT-CDO-ALLDAYEVENT - Microsoft Outlook ganztägige Ereignisflagge
  • X-MICROSOFT-CDO-BUSYSTATUS - Microsoft Outlook-Statusinformationen
  • X-MICROSOFT-CDO-BEABSICHTIGTER STATUS
  • X-WR-CALNAME - Der Anzeigename des Kalenders
  • X-WR-CALDESC - Eine Beschreibung des Kalenders
  • X-WR-RELCALID - Eine weltweit eindeutige Kennung für den Kalender
  • X-WR-TIMEZONE
  • X-PUBLISHED-TTL - Empfohlenes Aktualisierungsintervall für das Abonnement des Kalenders
  • X-ALT-DESC - Wird verwendet, um HTML-Markup in die Beschreibung eines Ereignisses aufzunehmen. Das Standard-Beschreibungs-Tag sollte eine Nicht-HTML-Version enthalten.

vKalender 1.0

Das Design von iCalendar basierte auf dem vorherigen Dateiformat vCalendar, das vom Internet Mail Consortium (IMC) erstellt wurde.

Hier ist ein Beispiel für Informationen im vCalendar-Format:

BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
CATEGORIES:MEETING
STATUS:TENTATIVE
DTSTART:19960401T033000Z
DTEND:19960401T043000Z
SUMMARY:Your Proposal Review
DESCRIPTION:Steve and John to review newest proposal material
CLASS:PRIVATE
END:VEVENT
END:VCALENDAR

Es hat die Dateierweiterung .vcs. Nach der Veröffentlichung von iCalendar erklärte das Internet Mail Consortium, dass es "hofft, dass alle vCalendar-Entwickler diese neuen offenen Standards nutzen und ihre Software sowohl mit vCalendar 1.0 als auch mit iCalendar kompatibel machen".

Vertretungen

xCal

xCal ist eine XML- Darstellung von iCalendar-Daten, wie in RFC  6321 definiert .

jCal

jCal ist eine JSON- Darstellung von iCalendar-Daten, wie in RFC  7265 definiert .

hKalender

hCalendar ist eine (x)HTML- Darstellung einer Teilmenge von iCalendar-Daten unter Verwendung von Mikroformaten .

hEvent

hEvent ist eine HTML-Darstellung einer Teilmenge von iCalendar-Daten unter Verwendung von Mikroformaten, die einige Bedenken hinsichtlich der Barrierefreiheit mit dem hCalendar-Format adressiert.

Siehe auch

Anmerkungen

Verweise

Externe Links

  • RFC  5545 Internet Calendaring and Scheduling Core Object Specification (iCalendar) (ersetzt RFC  2445 )
  • RFC  5546 iCalendar Transport-Independent Interoperability Protocol (iTIP) (ersetzt RFC  2446 )
  • RFC  6047 iCalendar Message-Based Interoperability Protocol (iMIP) (ersetzt RFC  2447 )
  • RFC  6321 xCal: Das XML-Format für iCalendar (iCalendar-XML-Darstellung)
  • RFC  6868- Aktualisierung der Datenformate für die Aufnahme bestimmter Zeichen, die durch die bestehende Spezifikation verboten sind, in Parameterwerten
  • RFC  7265 jCal: Das JSON-Format für iCalendar
  • RFC  7986 Neue Eigenschaften für iCalendar (zusätzliche Eigenschaften zur iCalendar-Spezifikation)
  • "Eine Einführung in die Internet-Kalender- und Terminplanung" . CalConnect . 2011-10-20.
  • "Persönlicher Datenaustausch - vCard und vCalendar" . Internet-Mail-Konsortium . Archiviert vom Original am 27.02.2017. - Dies beschreibt die Beziehung zwischen vCard, vCalendar und iCalendar und beinhaltet die Bitte von IMC an die Implementierer, sowohl vCalendar als auch iCalendar zu unterstützen.
  • "iCalendar-Ressourcen" . - Eine Liste von Ressourcen für iCalendar und verwandte Standards.