Вопрос:
Я создал следующий файл “.ics”. Когда я открываю его в Google и iCal, он показывает правильное время, но когда я открываю Outlook 2010, он показывает время на один час вперед. Любая помощь?
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//www.marudot.com//iCal Event Maker X-WR-TIMEZONE:America/Los_Angeles BEGIN:VEVENT DTSTART;TZID=America/Los_Angeles:20140510T110000 DTEND;TZID=America/Los_Angeles:20140510T111500 SUMMARY:Appointment-11:00 AM-PST DESCRIPTION:Appointment-11:00 AM-PST LOCATION:Location: TBD END:VEVENT END:VCALENDAR Ответ №1
При использовании локального времени с часовым поясом добавления TZID ко всем связанным с датой свойствам недостаточно. Это связано с тем, что нет глобального реестра TZID, который понимается всеми клиентами. Следовательно, в поток iCalendar необходимо включить определение часового пояса, соответствующее этому TIZD.
Другими словами, ваш поток не соответствует iCalendar. Перед событием (перед BEGIN: VEVENT) вы должны иметь правильное определение VTIMEZONE, соответствующее TZID America/Los_Angeles. См. Https://tools.ietf.org/html/rfc5545#section-3.8.3.1.
В вашем случае это будет примерно так:
BEGIN:VTIMEZONE TZID:America/Los_Angeles TZURL:http://tzurl.org/zoneinfo/America/Los_Angeles X-LIC-LOCATION:America/Los_Angeles BEGIN:DAYLIGHT TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT DTSTART:20070311T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST DTSTART:20071104T020000 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU END:STANDARD END:VTIMEZONE Ответ №2
Я не думаю, что “TZID = America/Los_Angeles” – это часовой пояс, который понимает Outlook. Попробуйте создать встречу в Outlook и сохранить ее как файл ICS. Что TZ использует Outlook?