Календарь Google добавляет час к событиям vCal, несмотря на установку BST и использование формата местного времени
Я создаю динамический файл vCalendar, чтобы сотрудники могли подписаться с помощью своего любимого календарного приложения (в основном Apple iCal или Google Calendar). Apple iCal работает нормально, но, что бы я ни делал, мне не удается заставить Календарь Google показывать правильное время. Похоже, он обрабатывает время как UTC/GMT и автоматически добавляет час, хотя я не использую суффикс 'Z' в датах DTSTART/DTEND, чтобы показать, что это уже местное время.
Я начал с простого формата, который не удосужился описать переход на летнее время, поскольку даты уже были локальными:
BEGIN:VCALENDAR
PRODID:-//My Calendar//Pix//EN
VERSION:2.0
METHOD:PUBLISH
X-WR-TIMEZONE:Europe/London
BEGIN:VEVENT
DTSTART:20150730T193000
DTEND:20150730T211500
DTSTAMP:20150704T113005
UID:8252@mycalendar
CLASS:PUBLIC
CREATED:20150701T100000
DESCRIPTION:Cabaret
LAST-MODIFIED:20150704T072253
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:The Supreme Fabulettes
LOCATION: White Rose Rotunda
END:VEVENT
END:VCALENDAR
Это отлично работает в iCal, но не в Календаре Google, поэтому я добавил материал VTIMEZONE после объявления X-WR-TIMEZONE выше:
BEGIN:VTIMEZONE
TZID:Europe/London
X-LIC-LOCATION:Europe/London
BEGIN:DAYLIGHT
DTSTART:19700330T010000
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19701026T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:STANDARD
END:STANDARD
END:VTIMEZONE
Это все еще работает в iCal, но Календарь Google по-прежнему настаивает на добавлении часа к каждому событию.
1 ответ
Хорошо, оказывается, выше работает. Проблема в кешировании Календаря Google. Если вы отмените подписку и повторно добавите URL-адрес, он по-прежнему будет использовать кэшированную версию. Помещение фиктивного запроса в конец URL-адреса вынудило Google обновиться, и, привет, теперь он показывает правильное время.