летнее время

Я даю своим пользователям ссылку, с помощью которой они могут помещать свои встречи, которые находятся в моей системе, в их программное обеспечение для календарей, например Outlook, с использованием URL-адреса iCalendar.

Я генерирую даты в файле, используя этот код:

echo "DTSTART;TZID=" . date_default_timezone_get() . ":" . strftime('%Y%m%d', strtotime($app->app_start)) . 'T' . strftime('%H%M%S', strtotime($app->app_start)) . '' . $eol;
echo "DTEND;TZID=" . date_default_timezone_get() . ":" . strftime('%Y%m%d', strtotime($app->app_end)) . 'T' . strftime('%H%M%S', strtotime($app->app_end)) . '' . $eol;

Это всегда работало правильно. Но сейчас у нас летнее время, и все встречи в летнее время появляются в моем Outlook на 1 час позже. Назначения до летнего времени в порядке.

Так, например, в моей ИКС:

DTSTART; TZID = Европа / Брюссель: 20150318T083000
DTEND; TZID = Европа / Брюссель: 20150318T090000

Это правильно отображается в моем календаре с 08:30 до 09:00

DTSTART; TZID = Европа / Брюссель: 20150407T083000
DTEND; TZID = Европа / Брюссель: 20150407T090000

Это моя проблема, это неправильно отображается в моем календаре: с 09:30 до 10:30.

Как я могу это исправить?

1

Решение

Вы должны убедиться, что ваш файл ics содержит определение часового пояса, например,

BEGIN:VTIMEZONE
TZID:US Mountain Standard Time
BEGIN:STANDARD
RRULE:FREQ=YEARLY;BYMONTH=0;BYDAY=+10SU
DTSTART:16010000T000000
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
END:STANDARD
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=+11SU
DTSTART:16011101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=+12SU
DTSTART:16010302T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]