outlook-web-addin - Свойство начала / окончания события календаря Outlook зависит от выбранного часового пояса? - PullRequest
0 голосов
/ 12 февраля 2019

Я создаю надстройку для Outlook, которая активна во время создания / редактирования события календаря Outlook.Надстройка обращается к времени начала / окончания события с помощью API, описанного здесь .Это дает объект Time, описанный здесь , для которого я использую getAsync (), чтобы получить объект Date.

Согласно моей интерпретации документации о start свойство, аргумент «результата» обратного вызова, вызываемого getAsync () , должен быть временем, выраженным как UTC, но это не так (он выражается по местному времени).

Но это, насколько я понимаю, особенность даты в JavaScript, и я могу справиться с этим.Реальная проблема, с которой я столкнулся, заключается в том, что outlook 365 позволяет выбрать часовой пояс в форме создания события, как можно увидеть здесь .Когда я меняю часовой пояс, доступ к свойству start из надстройки приводит к другому времени (которое также выражается в местном времени).Я ожидал бы того же времени (как и прежде, чем выбрать другой часовой пояс).Глядя на событие, созданное Outlook в календаре, также становится ясно, что Outlook знает, что это то же самое время, выраженное в другом часовом поясе.

Итак, чтобы сделать это более конкретным:

  1. создать новое событие в календаре, которое, например, начинается в 11:30 и заканчивается в 13:00 (выбранный часовой пояс в форме составления соответствует местному времени, например, "Brussels Copenhagen Madrid, UTC + 1")
  2. при доступе к свойству start из надстройки мы получаем объект Date, который содержит «11:30 UTC + 1» (для пользователя, находящегося в этом часовом поясе)
  3. теперь мы меняем часовой пояс в форме, к «Москва, Санкт-Петербург, Волгоград, UTC + 3».
  4. при чтении свойства start мы теперь получаем объект Date, который содержит «13:30 UTC + 1», но мы ожидаем того же«10:30 UTC» или, может быть, «11:30 UTC + 1».Причина, по которой мы ожидаем, что это будет то же самое, заключается в том, что изменение часового пояса, в котором выражено время, не должно перемещать событие во времени.И на самом деле outlook не перемещает событие (как видно из календаря), но свойство start говорит нам, что оно делает.

Мне известно о Office.context.mailbox.методы convertUtcClientTime () и Office.context.mailbox.convertToLocalClientTime (), но, насколько я понимаю, и могу тестировать, я не могу использовать их, чтобы получить то, что хочу.

Поэтому мой вопрос: неправильно ли я понялчто-то или я что-то не так делаю, и если да, то как мне узнать в реальном времени, когда событие начинается / заканчивается (предпочтительно в UTC), но не в зависимости от выбранного часового пояса?

Редактировать: такое поведение наблюдается в настольной версии Outlook (ежемесячный канал «нажми и работай» версии 1901, работающий в Windows 10), а также в Outlook в Интернете (https://outlook.office365.com/) на нескольких веб-платформах. Наш манифестXML-файл для надстройки содержит следующий раздел

<Hosts>
    <Host Name="Mailbox" />
</Hosts>
<Requirements>
    <Sets>
      <Set Name="Mailbox" MinVersion="1.1" />
    </Sets>
</Requirements>

Файл index.html надстройки содержит следующее:

<script type="text/javascript" 
 src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js"> 
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...