Есть ли обходной путь для отсутствия формата TZID Олсена в файле ICS - PullRequest
12 голосов
/ 15 сентября 2011

У меня недавно была проблема с файлом ICS, который я получил по электронной почте.Моя копия Outlook 2010 не распознает часовой пояс правильно.Вот способ, которым время начала собрания было представлено в файле ICS:

DTSTART;TZID=America/Los_Angeles:20110928T183000

Когда Outlook импортировал этот файл, он изменил время с 18:30 по тихоокеанскому времени на 19:30 по тихоокеанскому временивремя.После некоторых экспериментов мне удалось получить файл ICS, который правильно импортирован в Outlook, изменив формат часового пояса:

DTSTART;TZID="Pacific Time":20110928T183000

После некоторых дальнейших исследований я обнаружил, что спецификация ICS файла оставляетвопрос определения часового пояса открыт, но предлагает использовать базу данных Olsen TZ .Похоже, что команда Microsoft Outlook решила проигнорировать это предложение.

Учитывая, что Outlook является довольно популярным клиентом календаря, существует ли надежный способ форматирования часовых поясов ICS для Outlook, который по-прежнему совместим с другими клиентами?Больше всего меня беспокоит эта проблема - ошибка молчания при импорте Outlook.Пользователи могут легко прийти на встречу в неподходящее время, так как Outlook не предупреждает, что он запутался в часовом поясе.Должны ли мы просто направлять пользователей Outlook в другой формат файла?

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

Ответы [ 2 ]

6 голосов
/ 01 марта 2012

Трудно судить без полного файла iCalendar, но вы определили / у вас есть VTIMEZONE компонент в файле календаря, который определяет, какой должна быть Америка / Los_Angeles?

Что-то вроде:

BEGIN:VTIMEZONE
TZID:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
1 голос
/ 13 января 2015

Вместо добавления определения часового пояса в файл ics было бы лучше упомянуть время начала / окончания события в самом UTC. Кроме того, пользователь ICS-файла - в вашем случае outlook - должен иметь возможность выполнить преобразование часового пояса из UTC (из файла ics) в предпочтительный часовой пояс, заданный конечным пользователем, непосредственно перед отображением события встречи в своих календарях.

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

Ссылки: Даже Google, похоже, сам обрабатывает часовые пояса в ics таким образом - Обработка часовых поясов Google

Надеюсь, это поможет.

...