iCal — может ли параметр TZID TimeZone содержать & quot;: & quot; обугливается?

В проекте c ++ я пишу парсер для чтения и записи в файлы .ics. Для этого я проверяю свой синтаксический анализатор на нескольких файлах с максимально возможным числом случаев из нескольких источников (gmail, Yahoo, …). Недавно я обнаружил в тестовом файле ситуацию, в которой я немного запутался и для которой я не смог найти удовлетворительного ответа.

Один из моих тестовых файлов не был импортирован моим парсером. VEVENT, который вызывает проблему, содержит следующую дату начала:

DTSTART;TZID=GMT+04:00:20120103T120000

Это событие соответствует VTIMEZONE, который объявляет свой параметр TZID следующим образом:

TZID:GMT+04:00

AFAIK вместо этого следует использовать символ «:» в качестве разделителя, и я подозреваю, что сам VTIMEZONE искажен в примере, описанном выше, но я не нашел ни одного документа, в котором явно указано, что такая ситуация никогда не может возникнуть. Я также заметил, что несколько приложений, таких как Thunderbird, также не могут импортировать этот файл, по-видимому, по той же причине.

Поэтому мой вопрос: может ли параметр TZID в VTIMEZONE содержать символ «:»?

Кроме того, я не знаю, должен ли я использовать содержимое TZID в качестве ключа для извлечения даты ISO из параметра DTSTART, или я просто отклоняю такое событие, отмечая его как поврежденное и показывая сообщение об ошибке после импорта ?

1

Решение

Право на это — RFC5545 и соответствующие подразделы:
RFC5545 3.2.19. Идентификатор часового пояса

tzidparam = «TZID» «=» [tzidprefix] paramtext

который дополняется
RFC5545 3.1. Линии содержания

param = param-name «=» param-value * («,» param-value)
param-value = paramtext / quoted-string
paramtext = * SAFE-CHAR
[..] SAFE-CHAR = WSP /% x21 /% x23-2B /% x2D-39 /% x3C-7E
/ NON-US-ASCII
; Любой символ, кроме CONTROL, DQUOTE, «;», «:», «,»

Из чего можно сделать вывод, что параметр Time Zone ID не могу содержит символ «:»

1

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

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

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