PHP EWS — встречи имеют разницу в один час между exchange 2010 и моим приложением

#php #timezone #exchange-server #exchangewebservices

#php #Часовой пояс #exchange-сервер #exchangewebservices

Вопрос:

Я использую библиотеку PHP EWS из github (https://github.com/jamesiarmes/php-ews ).

При получении набора элементов календаря с помощью CalendarView элементы принимаются с разницей во времени в 1 час. Для часового пояса сервера exchange установлено значение «(UTC) Дублин, Эдинбург, Лиссабон, Лондон», и включен переход на летнее время.

Просматривая документацию EWS 2010, невозможно указать, в каком часовом поясе находится мое клиентское приложение, используя CalendarView.

Я изменил часовой пояс сервера, на котором запущено мое приложение, и пробовал много других способов попытаться получить время встречи между сервером exchange и моим приложением, но безрезультатно.

Кто-нибудь может посоветовать, как это можно преодолеть?

Большое спасибо,

Ответ №1:

Вам необходимо указать часовой пояс и переход на летнее время в заголовке SOAP, например, для конкретного часового пояса, который вы упомянули, это будет

     <soap:Header>
  <t:RequestServerVersion Version="Exchange2013" />
  <t:TimeZoneContext>
    <t:TimeZoneDefinition Name="(UTC) Dublin, Edinburgh, Lisbon, London" Id="GMT Standard Time">
      <t:Periods>
        <t:Period Bias="P0DT0H0M0.0S" Name="Standard" Id="Std" />
        <t:Period Bias="-P0DT1H0M0.0S" Name="Daylight" Id="Dlt/1" />
      </t:Periods>
      <t:TransitionsGroups>
        <t:TransitionsGroup Id="0">
          <t:RecurringDayTransition>
            <t:To Kind="Period">Dlt/1</t:To>
            <t:TimeOffset>P0DT1H0M0.0S</t:TimeOffset>
            <t:Month>3</t:Month>
            <t:DayOfWeek>Sunday</t:DayOfWeek>
            <t:Occurrence>-1</t:Occurrence>
          </t:RecurringDayTransition>
          <t:RecurringDayTransition>
            <t:To Kind="Period">Std</t:To>
            <t:TimeOffset>P0DT2H0M0.0S</t:TimeOffset>
            <t:Month>10</t:Month>
            <t:DayOfWeek>Sunday</t:DayOfWeek>
            <t:Occurrence>-1</t:Occurrence>
          </t:RecurringDayTransition>
        </t:TransitionsGroup>
      </t:TransitionsGroups>
      <t:Transitions>
        <t:Transition>
          <t:To Kind="Group">0</t:To>
        </t:Transition>
      </t:Transitions>
    </t:TimeZoneDefinition>
  </t:TimeZoneContext>
</soap:Header>
  

Это задокументировано в http://msdn.microsoft.com/en-us/library/ee332363 (v=exchg.140).aspx

Приветствия, Глен

Комментарии:

1. Спасибо, Глен. Хотя это невозможно указать с помощью пакета PHP EWS, указание напрямую с помощью SOAP работает с удовольствием.

2. Можете ли вы сказать мне, какой файл из проекта PHP EWS вы изменили, чтобы заставить это работать?