Bonjour à tous
Comme je l'ai dit dans un autre fil, je fabrique des fichiers .ics pour permettre aux utilisateurs de s'abonner à ces calendriers.
Je rencontre le problème suivant:
- dans l'application iCalendar d'Apple, les événements sont affichés avec la "bonne" heure, je veux dire avec l'heure que j'ai indiquée dans le fichier, par exemple

DTSTART:20180111T200000
DTEND:20180111T223000

affiche un événement qui a eu lieu le 11/01/2018 de 20h à 23h
Par contre sur Google Agenda, le même événement est affiché de 21h à 24h
La raison évidente est la façon dont ces produits traitent les fuseaux horaires.

J'ai donc cherché sur Internet comment indiquer le fuseau horaire de Paris
J'ai trouvé des informations divergentes,
Celle qui m'a semblé la plus sérieuse est d'insérer avant le premier événement la séquence de commandes suivante:

BEGIN:VTIMEZONE
TZID:Europe/Paris
X-LIC-LOCATION:Europe/Paris
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE

Cela ne semble pas avoir d'effet sur l'affichage des événements
Peut être y a-t-il d'autres modifications à apporter à ce fichier:
https://www.alma-musica.net/calendar/EVPC.ics
Merci de votre aide
salut papy Smiley cligne

Pas de réponses claires de ma part je ne maitrise pas cette partie en revanche de ce que je sais et que j'ai lu.
Les dates d'un ics doivent être exprimées en UTC
Et sur tous les exemples que j'ai pu voir il y a un Z à la fin
de ce type : DTSTART:20180111T200000Z

Si cela peut t'aider Smiley cligne
Merci de ta réponse, je vais essayer de faire cette modif (UTC, parce que le "Z" tout seul ne change rien...)
Modérateur
Ou juste préciser la timezone dans la date:

DTSTART:TZID=Europe/Paris:20180111T200000
DTEND:TZID=Europe/Paris:20180111T223000
Je pensais que justement le fait d'ajouter la description de la timezone en tête suffirait à l'applique à tout ce qui suit, mais ce n'est manifestement pas le cas.
Je vais essayer ça et voir ce que ça donne.

Tous mes essais de travail sur la conversion heure locale -> GMT donnent des résultat intéressants: si je lui donne une date du genre
2018/07/26T15:11:32CET
et que je demande la valeur GMT de cette date, j'obtiens
2018/07/26T14:11:32GMT
C'est à dire une heure de décalage, comme en hiver, alors qu'il y en a deux en été.
Je suppose qu'il doit y avoir des fonctions PHP qui font ça, mais pour le moment je n'y vois pas très clair.
Modérateur
Cette version a un problème: le Z

DTSTART:TZID=Europe/Paris:20180506T100000Z

L'heure est-elle UTC (z) ou Europe/Paris ?
Euh! non...
les dates de l'événement sont
DTSTART:TZID=Europe/Paris:20180110T200000
DTEND:TZID=Europe/Paris:20180110T220000

Dans le calendrier Google ça affiche toujours 21h à minuit
Modifié par PapyJP (26 Jan 2018 - 17:50)
Modérateur
Bonjour,

Je viens d'essayer de charger le fichier EVPC.ics dans un calendrier google "online". Ca renvoie un message disant que le fichier ne peut être traité.

J'ai essayé avec le fichier ci-dessous:
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
X-WR-CALNAME:Calendar
PRODID [ohwell]/Apple Inc.//Mac OS X 10.11.6//EN
X-APPLE-CALENDAR-COLOR:#1BADF8
X-WR-TIMEZONE:Europe/Paris
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Paris
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
DTSTART:19810329T020000
TZNAME:UTC+2
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
DTSTART:19961027T030000
TZNAME:UTC+1
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:R20180110
DTSTAMP:20180126T122608
DTSTART;TZID=Europe/Paris:20180110T200000
DTEND;TZID=Europe/Paris:20180110T220000
LOCATION:Théâtre Jean Arp  - Clamart - 22 Rue Paul Vaillant Couturier 
 / 92140 Clamart
SUMMARY:Ensemble Vocal Philippe Caillard
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

Ca a bien inséré un évènement le mercredi 10 janvier de 20h à 22h.

Par rapport au fichier EVPC.ics, j'ai modifié l'entête (j'ai repris une entête générée par l'ical de mon macintosh sans chercher à comprendre).

J'ai supprimé les "Z" en fin de date.

J'ai remplacé les ":" après DTSTART et DTEND par des ";".

Les dates et heures sont celles du fuseau horaire de Paris (pas celles GMT).

Amicalement,
Modifié par parsimonhi (26 Jan 2018 - 18:47)
J'ai fini par faire quelque chose qui marche, de la façon suivante:
- ne pas inclure la définition de TIMEZONE
- calculer les dates en GMT
Pour ceux que ça intéresse, voici la fonction qui calcule la valeur GMT d'une date.
Je pense qu'on peut faire mieux, mais au moins ça fonctionne.

function dateToCal($timestamp) {
  $dateTime = new DateTime(date('c', $timestamp), new DateTimeZone("Europe/Paris"));
  return gmdate('Ymd\THis\Z', $dateTime -> getTimeStamp());
}
Modérateur
Bonjour,

Je viens d'essayer avec le fichier suivant (en retirant les entêtes, mais en gardant les time zones dans les dates) :
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
BEGIN:VEVENT
UID:R20180111
DTSTAMP:20180126T122610
DTSTART;TZID=Europe/Paris:20180111T200000
DTEND;TZID=Europe/Paris:20180111T220000
LOCATION:Théâtre Jean Arp  - Clamart - 22 Rue Paul Vaillant Couturier 
 / 92140 Clamart
SUMMARY:Ensemble Vocal Philippe Caillard
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

Ca marche nickel dans le calendrier google (insertion un évènement le 11 janvier 2018 de 20h à 22h). Le même fichier marche également nickel avec ical sur MacOS.

Amicalement,
Humm!
ça génère bien la date GMT, mais Google Agenda n'a pas l'air d'en prendre compte.
DTSTART:20180111T190000Z
DTEND:20180111T213000Z
s'affiche comme démarrant à 21h
Je laisse tomber pour le moment
Si vous avez une idée....
Modifié par PapyJP (26 Jan 2018 - 19:05)
Modérateur
PapyJP a écrit :
Humm!
ça génère bien la date GMT, mais Google Agenda n'a pas l'air d'en prendre compte.
DTSTART:20180111T190000Z
DTEND:20180111T213000Z
s'affiche comme démarrant à 21h
Je laisse tomber pour le moment
Si vous avez une idée....

Mon fichier ou ton fichier ?

Amicalement,
Modérateur
Bonjour,

Les "Z" indique qu'une date est donnée en GMT+0. Quand on donne une date en GMT+0, on ne doit pas mettre de time zone, et on doit ajouter le "Z" en fin de date. Sinon, on met une time zone et pas de "Z" en fin de date.

Si on donne une date en GMT+0, le calendrier va évidemment transformer cette date et la mettre à l'heure de sa propre time zone.

L'erreur de formatage initiale (qui consistait en cas d'emploi d'une time zone dans les dates à faire précéder cette time zone d'un ":" au lieu d'un ";") n'a pas dû aider à faire marcher les premiers essais.

EDIT:
DTSTART:20180111T190000Z et DTEND:20180111T213000Z marchent nickel avec un calendrier google (insertion de l'évènement dans le créneau horaire 20h à 22h30).

Amicalement,
Modifié par parsimonhi (26 Jan 2018 - 19:37)
parsimonhi a écrit :

DTSTART:20180111T190000Z et DTEND:20180111T213000Z marchent nickel avec un calendrier google (insertion de l'évènement dans le créneau horaire 20h à 22h30).

Merci de ta réponse
Je pense qu'il y a autre chose quine marche pas dans mon fichier
mon fichier Google Agenda se présente sous la forme

BEGIN:VCALENDAR
PRODID [ohwell]/Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:jeanpierre.moularde@free.fr
X-WR-TIMEZONE:Europe/Paris
BEGIN:VEVENT
DTSTART:20180127T123000Z
DTEND:20180127T133000Z
DTSTAMP:20180127T121107Z
UID:79ug5jvefkkc7fbmh3o6o3josq@google.com
CREATED:20180127T120738Z
DESCRIPTION:
LAST-MODIFIED:20180127T120738Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:test
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Je vais mettre mes fichiers sous cette forme et voir ce qui se passe
Ça marche! (ou du moins ça a l'air de marcher)
Ce qui manquait à mon fichier, c'est
X-WR-TIMEZONE:Europe/Paris

Difficile de trouver cette info !