Проблемы с получением Календаря Google для соблюдения часового пояса iCal
Я создал канал iCal, который отлично работает в календаре Apple. Затем я попытался импортировать его в Календарь Google, и время у всех пять часов, что имеет смысл, потому что я нахожусь в часовом поясе США / Восточный. Исходя из технических характеристик, я предполагал, что программа календаря должна учитывать мое время как местное, основываясь на том, как они отформатированы (у них нет тегов часового пояса или UTC), но этого не происходит. Итак, я добавил информацию о часовом поясе в календарь.
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:iCalendar-Ruby VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
END:VTIMEZONE
Я удалил повторно импортированный календарь, и время все еще выключено. Стандартное событие выглядит так:
BEGIN:VEVENT
DESCRIPTION:Justin M. is scheduled to work from 12 PM to 3 PM.
DTEND:20111103T150000
DTSTAMP:20111122T144545
DTSTART:20111103T120000
LOCATION:Museum of Unnatural History
SEQUENCE:0
SUMMARY:Justin M.
UID:2011-11-22T14:45:45+00:00_239255930@0a9a698e-854d-48e2-97d4-37ff0b28311 9
END:VEVENT
Итак, я не уверен, почему у календаря Google возникают проблемы. Может быть, это просто кеширование URL и не обновление календаря? Есть ли что-то еще, что я должен сделать.
2 ответа
Итак, я прибег к использованию времени UTC, добавив Z
до конца каждого события времени. В сочетании с информацией о часовом поясе в календаре Google корректно конвертирует время, за исключением летнего времени. Те все еще выключены. Обновлюсь, если смогу выяснить почему.
Вы можете указать определенный часовой пояс в каждой дате события, например
DTSTART;TZID=America/New_York:20150218T133000
Таким образом, летнее время будет учитываться автоматически, и вам не нужно будет конвертировать из местного времени в формат UTC (Z) при создании календаря. Обратите внимание, что вы также можете столкнуться с проблемами часовых поясов, если клиент, который интерпретирует ical-файл, не имеет правильной настройки зоны.