Проблемы с часовым поясом в файле iCalendar

У меня есть файл iCal:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Test
VERSION:2.0
BEGIN:VTIMEZONE
TZID:TestZone
BEGIN:STANDARD
DTSTART:20130509T120000
RDATE:20130509T120000
TZOFFSETFROM:-0000
TZOFFSETTO:-0000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=TestZone:20130509T120000
DTEND;TZID=TestZone:20130509T130000
SUMMARY:Hi! You have set a appointment with us!
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:[email protected]
ORGANIZER:MAILTO:[email protected]
LOCATION:Test Street
DESCRIPTION:Appointment
SEQUENCE:0
PRIORITY:5
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT00H15M00S
END:VALARM
END:VEVENT
END:VCALENDAR

Но когда я загружаю его в свой GMAIL, он говорит, что календарь установлен на 10:00 - 11:00.

введите описание изображения здесь

Почему это происходит, если в моей конфигурации VTIMEZONE не задано смещение? И как получить фактическое время DTSTART и DTEND в моем календаре?


person Alexandre    schedule 08.05.2013    source источник
comment
@oberon Что должно быть добавление тега с одним подписчиком, что дает преимущество в вопросе?   -  person πάντα ῥεῖ    schedule 07.02.2014


Ответы (1)


RFC находится здесь: http://tools.ietf.org/html/rfc5545

Вы должны указать местное время с помощью TZID, который определяет смещение.

Пример:

DTSTART;TZID=America/New_York:19970714T133000

Вам необходимо использовать компонент VTIMEZONE в файле ics.

BEGIN:VTIMEZONE
TZID:America/New_York
LAST-MODIFIED:20050809T050000Z
BEGIN:DAYLIGHT
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
END:VTIMEZONE

Эти примеры взяты из RFC 5545

person LameCoder    schedule 08.05.2013