Как справиться с переключением между дневным и стандартным временем в vcalendar?

Сгенерированный код работает только в текущем часовом поясе (дневное или стандартное время). Когда я отправляю встречу Outlook со стандартного времени на дневное или наоборот, Outlook корректирует встречу и перемещает ее на 1 час вперед.

Outlook исправляет это следующим образом: эта встреча настроена на ваш текущий часовой пояс. Первоначально был создан в этом часовом поясе: Europe/Prague.

Я отправляю встречу - 6.5.2020: 8-9 утра, но в Outlook 6.5.2020: 9-10 утра

Проблема в Outlook или в моем коде? Спасибо за любую помощь...

Это скрипт на php (7), который собирает данные из определенных источников xml. Мне нужно отправить их в календарь Outlook. Мы используем Outlook 2016 и 365.

    function setICalendar(){
  $this->strICalendarClass="\nBEGIN:VCALENDAR\nMETHOD:REQUEST";
  $this->strICalendarClass.="\nBEGIN:VTIMEZONE\nTZID:Europe/Prague";
  $this->strICalendarClass.="\nX-LIC-LOCATION:Europe/Prague";
  $this->strICalendarClass.="\nBEGIN:STANDARD";
  $this->strICalendarClass.="\nDTSTART:19411001T000000";
  $this->strICalendarClass.="\nTZOFFSETFROM:0000\nTZOFFSETTO:0000\nTZNAME:Standard Time";
  $this->strICalendarClass.="\nRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10";
  $this->strICalendarClass.="\nCET";
  $this->strICalendarClass.="\nEND:STANDARD";
  $this->strICalendarClass.="\nBEGIN:DAYLIGHT";
  $this->strICalendarClass.="\nDTSTART:19860504T000000";
  $this->strICalendarClass.="\nTZOFFSETFROM:-0200\nTZOFFSETTO:-0100\nTZNAME:Daylight Savings Time";
  $this->strICalendarClass.="\nRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3";
  $this->strICalendarClass.="\nCEST";
  $this->strICalendarClass.="\nEND:DAYLIGHT\nEND:VTIMEZONE";
  $this->strVEvent="\nBEGIN:VEVENT";

nBEGIN:VCALENDAR
METHOD:REQUEST;
BEGIN:VTIMEZONE
TZID:Europe/Prague;
X-LIC-LOCATION:Europe/Prague;
BEGIN:STANDARD";
DTSTART:19411001T000000;
TZOFFSETFROM:0000
TZOFFSETTO:0000
TZNAME:Standard Time;
RULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;
CET;
END:STANDARD;
BEGIN:DAYLIGHT;
DTSTART:19860504T000000;
TZOFFSETFROM:-0200
TZOFFSETTO:-0100
TZNAME:Daylight Savings Time;
RULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3;
CEST;
END:DAYLIGHT;
END:VTIMEZONE;

Я ожидаю того же времени в начале и в перспективе.


person rubla    schedule 01.11.2019    source источник


Ответы (1)


Я его ремонтирую, вот так и все работает.

$this->strICalendarClass="\nBEGIN:VCALENDAR\nMETHOD:REQUEST";
  $this->strICalendarClass.="\nBEGIN:VTIMEZONE\nTZID:Europe/Prague";
  $this->strICalendarClass.="X-LIC-LOCATION:Europe/Prague";
  $this->strICalendarClass.="\nBEGIN:STANDARD";
  $this->strICalendarClass.="\nDTSTART:19411001T000000";
  $this->strICalendarClass.="\nTZOFFSETFROM:-0100\nTZOFFSETTO:0000\nTZNAME:Standard Time";
  $this->strICalendarClass.="\nRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10";
  $this->strICalendarClass.="\nCET";
  $this->strICalendarClass.="\nEND:STANDARD";
  $this->strICalendarClass.="\nBEGIN:DAYLIGHT";
  $this->strICalendarClass.="\nDTSTART:20140330T030000";
  $this->strICalendarClass.="\nTZOFFSETFROM:0000\nTZOFFSETTO:+0100\nTZNAME:Daylight Savings Time";
  $this->strICalendarClass.="\nRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3";
  $this->strICalendarClass.="\nCEST";
  $this->strICalendarClass.="\nEND:DAYLIGHT\nEND:VTIMEZONE";
person rubla    schedule 05.11.2019