Часовые пояса ICS не преобразуются правильно при импорте в Google или Outlook - PullRequest
0 голосов
/ 09 июля 2019

Я сгенерировал ICS-файл, который содержит события, каждое из которых начинается в 9 AM и заканчивается 17:00 по тихоокеанскому времени (UTC-8) .При конвертации в мое местное время (GMT + 4), оно должно показывать события 22:00 - 6:00 , вместо этого и Google, и Outlook конвертируют его тоже 8:00 - 4:00 .

Я пытался настроить параметры TZOFFSETFROM и TZOFFSETTO как для дневного, так и для стандартного режима, чтобы показать правильное преобразование, но это влияет только на Outlook - Календарь Googleкажется, полностью игнорировать эти настройки.Тем не менее, мне все равно кажется неправильным изменять настройки Outlook, поскольку изначально они имеют правильные настройки для Pacific Time?

Код для файла ICS прилагается.

VERSION:2.0
PRODID:-//Foobar Corporation//NONSGML Foobar//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:EnergyPlex
X-WR-TIMEZONE:America/Los_Angeles
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-LIC-LOCATION: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
BEGIN:VEVENT
UID:20190709T133817-12030501-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190722T090000
DTEND;TZID=America/Los_Angeles:20190722T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-422290764-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190723T090000
DTEND;TZID=America/Los_Angeles:20190723T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-847881910-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190724T090000
DTEND;TZID=America/Los_Angeles:20190724T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-1093239879-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190725T090000
DTEND;TZID=America/Los_Angeles:20190725T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-190860610-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190726T090000
DTEND;TZID=America/Los_Angeles:20190726T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
END:VCALENDAR

ожидаемый результат - показ событий 22:00 - 6:00 в GMT + 4 часового пояса как в Outlook, так и в Календаре Google.

1 Ответ

1 голос
/ 09 июля 2019

Исходя из предоставленной вами информации, ваше предположение неверно. Оба показывают правильное время:

Учитывая дату начала и окончания ваших событий (например, start = 20190722T090000 для первого), America / Los_Angeles находится в DST в эти даты и, следовательно, в UTC-7.

20190722T090000 + 7h = 20190722T160000 по времени UTC и при преобразовании в UTC + 4 вы получите 20190722T160000 + 4h = 20190722T200000, поэтому 8 вечера по местному времени.

...