Как справиться с переключением между летним и стандартным временем в vcalendar? - PullRequest
0 голосов
/ 01 ноября 2019

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

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

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

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

Это скрипт в php (7), который собирает данные о вещах из определенных источников XML. Мне нужно отправить их в календарь 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;

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

1 Ответ

0 голосов
/ 05 ноября 2019

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

$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";
...