Outlook не импортирует VCS с часовыми поясами правильно?

В нашем веб-приложении на ASP есть модуль, который генерирует файлы VCS для импорта в календарь. Это прекрасно работает, если клиент находится в той же зоне, что и мы (GMT).

Но если я создаю событие, которое начинается в 9:00 в UTC-01, например, я все равно получаю событие, начинающееся в 9:00 UTC/GMT, как будто оно не читает TZOFFSET

Это сгенерированный VCS. В этом примере событие должно состояться 30 декабря 2011 года с 9 до 10 утра в UTC-05 (Нью-Йорк). Если я оставлю свой часовой пояс как GMT, я получу встречу с 9 утра до 10 утра вместо расчета разницы во времени. Даже если я меняю свои часовые пояса, он всегда рассчитывает разницу с GMT, а не с часовым поясом, в котором происходит событие.

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-Microsoft
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
TZ:UTC-05
X-MICROSOFT-CDO-TZID:10
BEGIN:STANDARD
DTSTART:20111230T090000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART: 20111230T090000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20111116T100300Z
DTSTART;TZID=America/New_York:20111230T090000
SUMMARY;ENCODING=QUOTED-PRINTABLE:TEST
UID:12347a7833h
ORGANIZER;CN=Test:MAILTO:test@test.com
LOCATION;ENCODING=QUOTED-PRINTABLE:Hall A
DTEND;TZID=America/New_York:20111230T100000
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:
SEQUENCE:0
PRIORITY:5
TRANSP:OPAQUE
CATEGORIES:Test
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR

Я уже несколько дней гуглюсь и не могу найти хорошую документацию о том, как правильно генерировать VCS.

Любая помощь будет отличной!

Спасибо, Федерико

2 ответа

Вот текст из поста в блоге, который я упомянул (который больше не доступен):

==========

Вот в чем проблема: если вы будете искать в Google информацию о том, как создать файл уведомлений и сообщений электронной почты календаря Outlook, вы можете наткнуться на эту страницу, на которой есть общий шаблон, который вы можете использовать. Или вы можете отправить себе приглашение и посмотреть исходный код файла ICS.

В любом случае вы увидите следующие строки в блоке VTIMEZONE:

TZID:(GMT-05.00) Eastern Time (US & Canada)
X-MICROSOFT-CDO-TZID:10

Обратите внимание на странную строку X-MICROSOFT-CDO-TZID... она просто имеет номер "10". Ну, согласно Microsoft, число 10 представляет восточный часовой пояс здесь, в Америке. При поиске в Google вы можете увидеть больше примеров этого странного сопоставления числа / местоположения, но вам будет сложно найти полный список всех сопоставлений. 11 - центральное время, 12 - горное время, 13 - тихоокеанское, но 38 - горное время для Аризоны...?

После долгих исследований (и телефонного звонка сотруднику MSFT) мы нашли этот документ глубоко на веб-сайте MSDN: http://msdn.microsoft.com/en-us/library/aa563018(loband).aspx

Он документирует все "номера часовых поясов", которые вам понадобятся для правильной настройки файла ICS.

==========

Ура!

Я уверен, что OP уже решил эту проблему, но вот отличный пост в блоге, в котором обсуждается проприетарный тег "X-MICROSOFT-CDO-TZID", который Microsoft использует для интерпретации часового пояса в Outlook: http://hello-dot-wordpress.blogspot.com/2009/10/my-guide-to-x-microsoft-cdo-tzid.html

Редактировать: Обновленная ссылка.

Другие вопросы по тегам