La norme Icalendar : ICS

les fichiers ICS sont des fichiers textes. Chaques évenements est encadré par les balises BEGIN:VEVENT et END:VEVENT. Entre ces 2 balises se succède une série de parametres obligatoires ou facultatifs, uniques ou multiples. Les paramètres peuvent eux même contenir d'autres parametres ou informations complémentaires.

Les dates
les tag uniques
les tag uniques (l'un ou l'autre)
les tag multiples
exemple
Autre exemple
La doc complete (en anglais) [RFC2445]

Les dates :

Il y a 2 facons de considérer les durées : soit de tel jour à tel jour, soit pendant x jours.
Dates :
le format de la date est le formmat anglo-saxon : année mois jour. pour le 15 mars 2003 cela donnera 20030315. A cela il faut ajouter l'heure. le format de l'heure est heures minutes secondes avec les heures variants de 00 à 23. pour 17h38 et 24s cela donnera 173824. L'écriture de la date s'écrirat donc : date (année mois jour ) + T + heure minutes secondes

exemple :
le 18/01/1998 à 23h00 :
DTSTART:19980118T230000

A cela on peut ajouter un Z à la fin ( ex : DTSTART:19980118T230000Z) pour spécifier qu'il s'agit de l'heure universelle (méridien de G.) pour spécifier un autre fuseau horaire il faut employer le tag TZID

exmple :
DTSTART;TZID=US-Eastern:19980119T020000

Durée :
"P" suivit du nombre de jours semaines + "T" suivit du nombre d'heures minutes ... :
dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week)
dur-date = dur-day [dur-time]
dur-time = "T" (dur-hour / dur-minute / dur-second)
dur-week = 1*DIGIT "W"
dur-hour = 1*DIGIT "H" [dur-minute]
dur-minute = 1*DIGIT "M" [dur-second]
dur-second = 1*DIGIT "S"
dur-day = 1*DIGIT "D"

Exemple :
Une durée de 15 jours , 5 heures et 20 secondes sera : P15DT5H0M20S
Une durée de 7 semaines : P7W

Période :

Exemple :
La période commencant le 1 janvier 1997 à 18:00:00 et se finissant le 2 janvier 1997 à 07:00:00 :
19970101T180000Z/19970102T070000Z
La période
La période commencant le 1 janvier 1997 à 18:00:00 et se finissant 5h30 plus tard :
19970101T180000Z/PT5H30M

Les TAG uniques :

Tag Valeurs Descriptions Exemple
Class "PUBLIC"/ "PRIVATE" / "CONFIDENTIAL" iana-token / x-name
deault PUBLIC
Type d'évenement : Public privé ou confidentiel CLASS:PUBLIC
created   date de création CREATED:19960329T133000Z
description   description du fichier du calendrier DESCRIPTION:Signature du contract
dtstart   date de départ de l'evenement DTSTART:19980118T073000Z
last-mod   derniere modification de l'evenemnt LAST-MODIFIED:19960817T133000Z
geo   position géographique Latitude Longitude decimal = degrees + minutes/60 + seconds/3600. GEO:37.386013;-122.082932
location   lieu LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf":Conference Room - F123, Bldg. 002
organizer   organisateur ORGANIZER;CN=John Smith:MAILTO:[email protected]
priority default : 0 aucune, 1 à 9 priorité PRIORITY:1
dtstamp   date de création de l'evenement DTSTAMP:19971210T080000Z
seq      
status "TENTATIVE" / "CONFIRMED" / "CANCELLED" état de l'évenement STATUS:TENTATIVE
summary   résumer SUMMARY:Department Party
transp "OPAQUE" / "TRANSPARENT" evenement apparaissant occupé ou libre TRANSP:TRANSPARENT
uid   identifiant unique UID:[email protected]
url   URL de ref URL:http://abc.com/pub/calendars/jsmith/mytime.ics
recurid   récurence RECURRENCE-ID; RANGE=THISANDFUTURE:19960120T120000Z

Les TAG uniques (l'un ou l'autre) :

Tag Valeurs Descriptions Exemple
dtend   fin de l'evenement DTEND:19960401T235959Z
duration   durée de l'evenement DURATION:PT1H0M0S

Les TAG multiples :

Tag Valeurs Descriptions Exemple
attach   document attaché ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/reports/r-960812.ps
attendee   Liste des personnes attendue(precision du role ... cf doc) ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry Cabot:MAILTO:[email protected]
categories   categorie CATEGORIES:APPOINTMENT,EDUCATION
comment   commentaires (txt) COMMENT:blablabla\, blabla.
contact   contact pour plus d'info CONTACT;ALTREP="http://host.com/pdi/jdoe.vcf":Jim Dolittle\, ABC Industries\, +1-919-555-1234
exdate   date d'exeption de la récurence EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
exrule   regle d'exeptions EXRULE:FREQ=YEARLY;COUNT=8;BYMONTH=6,7 (Except yearly in June and July for 8 occurrences)
rstatus      
related   objets en relation RELATED-TO:<[email protected]>
resources   matériel nécessaire RESOURCES;LANGUAGE=fr:1 raton-laveur
rdate "DATE-TIME" / "DATE" / "PERIOD" date de récurence RDATE;VALUE=PERIOD:19960403T020000Z/ 19960403T040000Z,19960404T010000Z/PT3H
rrule   regle de récurence RRULE:FREQ=DAILY;UNTIL=19971224T000000Z

exemple :

Données Commentaires
BEGIN:VCALENDAR
Début du calendrier
CALSCALE:GREGORIAN Type de calendrier
X-WR-TIMEZONE;VALUE=TEXT:US/Central  
PRODID:-//Apple Computer\, Inc//iCal 1.0//EN Ce qui a créé ce fichier (ici apple)
X-WR-CALNAME;VALUE=TEXT:School nom du calendrier
X-WR-RELCALID;VALUE=TEXT:D573561C-E7AB-11D6-8111-0050E4E60429  
VERSION:2.0 Version
BEGIN:VEVENT Début d'un evenement
UID:D572BB91-E7AB-11D6-8111-0050E4E60429 unique id
DTSTAMP:20021024T235007Z date de création de l'evenemnt
SUMMARY:Computer Organization résumer
EXDATE;TZID=US/Central:20021112T080000
EXDATE;TZID=US/Central:20021018T080000
EXDATE;TZID=US/Central:20021010T080000
EXDATE;TZID=US/Central:20021128T080000
EXDATE;TZID=US/Central:20021002T080000
EXDATE;TZID=US/Central:20021001T080000
EXDATE;TZID=US/Central:20021129T080000
EXDATE;TZID=US/Central:20021021T080000
dates d'exeption (l'evenement n'a pas lieu)
DTSTART;TZID=US/Central:20020904T080000

date du départ format: YYYYMMDDTHHMMSSZ
T sépare la date de l'heure
YYYY année
MM mois
DD jour
HH heure
MM minutes
SS secondes
Z : pour le temps UTC (Z pour zulu)

DTEND;TZID=US/Central:20020904T090000 Date de fin comme pour la date de départ.
RRULE:FREQ=WEEKLY;UNTIL=20021214T055959; INTERVAL=1;BYDAY=MO,TU,WE,TH,FR Règle de répétition : toutes les semaines 1x les lundi mardi mercredi jeudi vendredi jusqu'au 14/12/2002
END:VEVENT fin de l'evenement
BEGIN:VEVENT  
...  
END:VEVENT  
...  
END:VCALENDAR  


Autre exemple :

BEGIN:VCALENDAR
PRODID:-//RDU Software//NONSGML HandCal//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:19980309T231000Z
UID:guid-1.host1.com
ORGANIZER;ROLE=CHAIR:MAILTO:[email protected]
ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
MAILTO:[email protected]
DESCRIPTION:Project XYZ Review Meeting
CATEGORIES:MEETING
CLASS:PUBLIC
CREATED:19980309T130000Z
SUMMARY:XYZ Project Review
DTSTART;TZID=US-Eastern:19980312T083000
DTEND;TZID=US-Eastern:19980312T093000
LOCATION:1CP Conference Room 4350
END:VEVENT
END:VCALENDAR