iKalender - iCalendar
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 |
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 ics
ist für Dateien zu verwenden, die Kalender- und Planungsinformationen enthalten, ifb
für Dateien mit Informationen zu freien oder beschäftigten Zeiten, die mit diesem MIME-Inhaltstyp übereinstimmen. Die entsprechenden Dateitypcodes in Apple Macintosh Betriebssystemumgebungen sind iCal
und 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:VCALENDAR
und 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 20010911T124640Z
beim Format <year (4 digits)><month (2)><day (2)>T<hour (2)><minute (2)><second (2)>Z
für eine feste Gesamtlänge von 16 Zeichen. Z die Verwendung zeigt UTC ( in Bezug auf seine „ Z ulu “ Zeitzone). Bei Verwendung in DTSTART
und 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)
VEVENT
beschreibt 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 VEVENT
kann ein enthalten, VALARM
das einen Alarm ermöglicht. Solche Ereignisse haben eine, DTSTART
die eine Startzeit festlegt, und eine, DTEND
die eine Endzeit festlegt. Wenn sich das Kalenderereignis wiederholt, DTSTART
wird der Beginn des ersten Ereignisses eingerichtet.
Ein VALARM-Code (Erinnerung 1 Tag vorher):
BEGIN:VALARM TRIGGER:-PT1440M ACTION:DISPLAY DESCRIPTION:Reminder END:VALARM
VEVENT
wird 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 UPDATE
für eine Veranstaltung UID
sollte 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 SUMMARY
entspricht das dem Eintrag "Betreff" im Formular "Termin" und DESCRIPTION
dem Beschreibungstext darunter. Darüber hinaus erfordern Outlook 2002 und Outlook 2003 a UID
und 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
- Liste der Anwendungen mit iCalendar-Unterstützung
- CalDAV
- GruppeDAV
- hKalender
- Scheduling OSID bietet eine Abstraktion der Softwareschnittstelle für die Verwendung von Kalenderprotokollen
- vCard
- xCal
- Webcal - ein inoffizielles Uniform Resource Identifier (URI) -Schema
- Zip-Datei
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.