2017-02-16 6 views
1

Я использую конечную точку REST API https://outlook.office.com/api/v1.0/me/events/, чтобы создать встречу в Outlook Live. Полезная нагрузка встречи выглядит как-Будущие повторяющиеся события Outlook REST API создаются с неправильным временем старта

{ 
    "Subject":"Test Meeting", 
    "Location":{ 
    "DisplayName":"" 
    }, 
    "Start":"2017-03-02T18:00:00Z", 
    "End":"2017-03-02T19:00:00Z", 
    "Body":{ 
    "ContentType":"HTML", 
    "Content":"<html><body>Test Meeting Content<\/body><\/html>" 
    }, 
    "Recurrence":{ 
    "Pattern":{ 
     "Type":"Weekly", 
     "Interval":1, 
     "Month":0, 
     "Index":"First", 
     "FirstDayOfWeek":"Sunday", 
     "DayOfMonth":0, 
     "DaysOfWeek":["Thursday"] 
    }, 
    "Range":{ 
     "Type":"EndDate", 
     "StartDate":"2017-03-02", 
     "EndDate":"2017-03-31" 
    }}, 
    "Attendees":[ 
     { 
     "EmailAddress":{ 
      "Address":"[email protected]" 
     }, 
     "Type":"Required" 
    } 
    ] 
} 

Для этого еженедельного повторяющегося события в течение месяца, первые два появления становятся созданы в нужное время, но остальные три конференцев-событий становятся создаются с задержкой часов (вместо 10 : 00:00 UTC, 11:00 UTC).

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

Кто-нибудь попал в эту или подобную проблему? Любые указатели будут очень полезны, спасибо!

Ссылка на API- https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#CreateEvents

ответ

0

API-интерфейс технически ведет себя правильно здесь. UTC не изменяется, но часовой пояс, который вы настроили на своем клиенте, скорее всего. В США стартует 12 марта, поэтому вы видите, что назначение «сдвигается» по местному виду, так что назначение всегда начинается в 18:00 UTC, как вы указали :)

Так что я предполагаю, что вы хотите, чтобы время начала оставаться постоянным при изменении DST, поэтому вы действительно хотите здесь указать часовой пояс для пользователя в запросе. Я рекомендую использовать v2 API, где Start и End типов изменения в DateTimeTimeZone, что позволяет указать TZ по имени:

"Start": { 
    "DateTime": "2017-03-02T10:00:00", 
    "TimeZone": "Pacific Standard Time" 
}, 
"End": { 
    "DateTime": "2017-03-02T11:00:00", 
    "TimeZone": "Pacific Standard Time" 
}, 

Однако, если вам нужно остаться с v1 API, то вам все еще может указать TZ в запросе, используя свойства StartTimeZone и EndTimeZone. Дополнительная работа, которую вы должны здесь сделать, - рассчитать смещения в значениях Start и End. Так, например, для стандартного тихоокеанскому времени, смещение -08:00 от UTC, поэтому соответствующий бит будет выглядеть следующим образом:

"Start": "2017-03-02T10:00:00-08:00", 
"StartTimeZone": "Pacific Standard Time", 
"End": "2017-03-02T11:00:00-08:00", 
"EndTimeZone": "Pacific Standard Time", 
+0

О, я вижу, я полностью пропустил. Спасибо тонну @ Джейсон. –

Смежные вопросы