Я создаю события календаря в Exchange (2010) через EWS используя библиотеку PHP EWS.
Когда я создаю событие, я устанавливаю время начала и окончания и часовой пояс. Отправляемый XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages">
<SOAP-ENV:Header>
<ns1:RequestServerVersion Version="Exchange2010"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:CreateItem SendMeetingInvitations="SendToNone">
<ns2:Items>
<ns1:CalendarItem>
<ns1:ItemClass>IPM.Appointment</ns1:ItemClass>
<ns1:Subject>aa</ns1:Subject>
<ns1:Sensitivity>Normal</ns1:Sensitivity>
<ns1:Body BodyType="HTML">aa</ns1:Body>
<ns1:Categories>
<ns1:String>Afspraak</ns1:String>
</ns1:Categories>
<ns1:Importance>Normal</ns1:Importance>
<ns1:ReminderIsSet>false</ns1:ReminderIsSet>
<ns1:Start>2015-10-06T22:00:00</ns1:Start>
<ns1:End>2015-10-06T22:00:00</ns1:End>
<ns1:IsAllDayEvent>true</ns1:IsAllDayEvent>
<ns1:LegacyFreeBusyStatus>Free</ns1:LegacyFreeBusyStatus>
<ns1:StartTimeZone Id="W. Europe Standard Time">
<ns1:Periods>
<ns1:Period Bias="-PT1H" Name="Standard" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Standard"/>
<ns1:Period Bias="-PT2H" Name="Daylight" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight"/>
</ns1:Periods>
<ns1:TransitionsGroups>
<ns1:TransitionsGroup Id="0">
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight</ns1:To>
<ns1:TimeOffset>PT2H</ns1:TimeOffset>
<ns1:Month>3</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Standard</ns1:To>
<ns1:TimeOffset>PT3H</ns1:TimeOffset>
<ns1:Month>10</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
</ns1:TransitionsGroup>
</ns1:TransitionsGroups>
<ns1:Transitions>
<ns1:Transition>
<ns1:To Kind="Group">0</ns1:To>
</ns1:Transition>
</ns1:Transitions>
</ns1:StartTimeZone>
<ns1:EndTimeZone Id="W. Europe Standard Time">
<ns1:Periods>
<ns1:Period Bias="-PT1H" Name="Standard" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Standard"/>
<ns1:Period Bias="-PT2H" Name="Daylight" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight"/>
</ns1:Periods>
<ns1:TransitionsGroups>
<ns1:TransitionsGroup Id="0">
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight</ns1:To>
<ns1:TimeOffset>PT2H</ns1:TimeOffset>
<ns1:Month>3</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Standard</ns1:To>
<ns1:TimeOffset>PT3H</ns1:TimeOffset>
<ns1:Month>10</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
</ns1:TransitionsGroup>
</ns1:TransitionsGroups>
<ns1:Transitions>
<ns1:Transition>
<ns1:To Kind="Group">0</ns1:To>
</ns1:Transition>
</ns1:Transitions>
</ns1:EndTimeZone>
</ns1:CalendarItem>
</ns2:Items>
</ns2:CreateItem>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Это работает отлично. Тем не менее, когда я добавляю участников и меняю SendMeetingInvitations
в SendOnlyToAll
По какой-то причине биржа меняет дату и время. Отправляемый XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages">
<SOAP-ENV:Header>
<ns1:RequestServerVersion Version="Exchange2010"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:CreateItem SendMeetingInvitations="SendOnlyToAll">
<ns2:Items>
<ns1:CalendarItem>
<ns1:ItemClass>IPM.Appointment</ns1:ItemClass>
<ns1:Subject>aa</ns1:Subject>
<ns1:Sensitivity>Normal</ns1:Sensitivity>
<ns1:Body BodyType="HTML">aa</ns1:Body>
<ns1:Categories>
<ns1:String>Afspraak</ns1:String>
</ns1:Categories>
<ns1:Importance>Normal</ns1:Importance>
<ns1:ReminderIsSet>false</ns1:ReminderIsSet>
<ns1:Start>2015-10-06T22:00:00</ns1:Start>
<ns1:End>2015-10-06T22:00:00</ns1:End>
<ns1:IsAllDayEvent>true</ns1:IsAllDayEvent>
<ns1:LegacyFreeBusyStatus>Free</ns1:LegacyFreeBusyStatus>
<ns1:RequiredAttendees>
<ns1:Attendee>
<ns1:Mailbox>
<ns1:EmailAddress>[email protected]</ns1:EmailAddress>
<ns1:RoutingType>SMTP</ns1:RoutingType>
</ns1:Mailbox>
</ns1:Attendee>
</ns1:RequiredAttendees>
<ns1:StartTimeZone Id="W. Europe Standard Time">
<ns1:Periods>
<ns1:Period Bias="-PT1H" Name="Standard" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Standard"/>
<ns1:Period Bias="-PT2H" Name="Daylight" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight"/>
</ns1:Periods>
<ns1:TransitionsGroups>
<ns1:TransitionsGroup Id="0">
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight</ns1:To>
<ns1:TimeOffset>PT2H</ns1:TimeOffset>
<ns1:Month>3</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Standard</ns1:To>
<ns1:TimeOffset>PT3H</ns1:TimeOffset>
<ns1:Month>10</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
</ns1:TransitionsGroup>
</ns1:TransitionsGroups>
<ns1:Transitions>
<ns1:Transition>
<ns1:To Kind="Group">0</ns1:To>
</ns1:Transition>
</ns1:Transitions>
</ns1:StartTimeZone>
<ns1:EndTimeZone Id="W. Europe Standard Time">
<ns1:Periods>
<ns1:Period Bias="-PT1H" Name="Standard" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Standard"/>
<ns1:Period Bias="-PT2H" Name="Daylight" Id="trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight"/>
</ns1:Periods>
<ns1:TransitionsGroups>
<ns1:TransitionsGroup Id="0">
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Daylight</ns1:To>
<ns1:TimeOffset>PT2H</ns1:TimeOffset>
<ns1:Month>3</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
<ns1:RecurringDayTransition>
<ns1:To Kind="Period">trule:Microsoft/Registry/W. Europe Standard Time/1-Standard</ns1:To>
<ns1:TimeOffset>PT3H</ns1:TimeOffset>
<ns1:Month>10</ns1:Month>
<ns1:DayOfWeek>Sunday</ns1:DayOfWeek>
<ns1:Occurrence>-1</ns1:Occurrence>
</ns1:RecurringDayTransition>
</ns1:TransitionsGroup>
</ns1:TransitionsGroups>
<ns1:Transitions>
<ns1:Transition>
<ns1:To Kind="Group">0</ns1:To>
</ns1:Transition>
</ns1:Transitions>
</ns1:EndTimeZone>
</ns1:CalendarItem>
</ns2:Items>
</ns2:CreateItem>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Как вы можете видеть, начальная и конечная дата-время одинаковы в обеих ситуациях, однако при просмотре событий в Outlook они различаются:
(Мой Outlook имеет часовой пояс UTC + 01: 00)
Одно событие отображается в правильной дате / времени, но другое так или иначе имеет дату начала 6-10-2015 02:00 и дату окончания 8-10-2015 02:00.
Почему это? И что более важно как решить эту проблему?
Примечание: это происходит только тогда, когда IsAllDayEvent
является true
, Если это не событие на весь день, оно создается правильно.
Задача ещё не решена.
Других решений пока нет …