2016-02-10 7 views
0

Я пытаюсь убедиться, что это проблема с перспективой.Возможная ошибка разбора часового пояса в Outlook

Я генерации файла Ics, который определяет часовой пояс события:

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:www.example.com 
X-WR-TIMEZONE:America/Chicago 
X-PUBLISHED-TTL:P1W 
BEGIN:VEVENT 
UID:56bba0729f450 
DTSTART;TZID=America/Chicago:20160212T170000 
SEQUENCE:0 
TRANSP:OPAQUE 
DTEND;TZID=America/Chicago:20160212T183000 
SUMMARY:Beer-o-clock 
CLASS:PUBLIC 
DTSTAMP:20160210T144122Z 
END:VEVENT 
BEGIN:VTIMEZONE 
TZID:America/Chicago 
X-LIC-LOCATION:America/Chicago 
BEGIN:DAYLIGHT 
TZNAME:CDT 
TZOFFSETFROM:-0600 
TZOFFSETTO:-0500 
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD 
TZNAME:CST 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0600 
DTSTART:19701101T030000 
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE 
END:VCALENDAR 

Это пригласит работает, но если открыть его в другом часовом поясе (например, я вижу это, когда я открываю его из Тихоокеанском часовом поясе), в прогнозе он не признает изменение часового пояса. Изменение часового пояса - это, который распознается другими приложениями, такими как Календарь Mac или календарь Google.

Когда я переставить файл календарь, так что VEVENT определения после VTIMEZONE определения он делает работу в мировоззрении:

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:www.example.com 
X-WR-TIMEZONE:America/Chicago 
X-PUBLISHED-TTL:P1W 
BEGIN:VTIMEZONE 
TZID:America/Chicago 
X-LIC-LOCATION:America/Chicago 
BEGIN:DAYLIGHT 
TZNAME:CDT 
TZOFFSETFROM:-0600 
TZOFFSETTO:-0500 
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD 
TZNAME:CST 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0600 
DTSTART:19701101T030000 
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VEVENT 
UID:56bba0729f450 
DTSTART;TZID=America/Chicago:20160212T170000 
SEQUENCE:0 
TRANSP:OPAQUE 
DTEND;TZID=America/Chicago:20160212T183000 
SUMMARY:Beer-o-clock 
CLASS:PUBLIC 
DTSTAMP:20160210T144122Z 
END:VEVENT 
END:VCALENDAR 

Похоже, это ошибка синтаксического анализа в перспективе, но я не совсем уверен, , Я не знаю, сколько у меня контроля над порядком, в котором генерируется файл ics, без взлома кода поставщика (который я надеюсь не делать).

Является ли это определённой перспективой или что-то еще не так с определением приглашения?

ответ

0

Спецификации iCalendar не требуют установки компонента VTIMEZONE в верхней части. Но, конечно же, люди могут свободно реализовывать спецификацию, однако они выбирают.

0

Хотя вы не можете найти что-либо в RFC5545/RFC5546, в котором указывалось бы, что компоненты VTIMEZONE должны появиться перед VEVENT, все примеры, приведенные в этих спецификациях, помещают его в этом порядке, и практика, очевидно, должна иметь VTIMEZONE перед VEVENT. Это также имеет смысл с точки зрения потребителей iCalendar, поскольку VTIMEZONE TZID ссылается на VEVENT.

Не следуя обычной практике, вы действительно просите о неприятностях. Предполагая, что вы решите проблему Outlook другим способом, вы, скорее всего, столкнетесь с проблемой взаимодействия с другим клиентом завтра. Таким образом, вам лучше исправить поток iCalendar.

Смежные вопросы