0

Я пытаюсь создать событие на весь день, используя o365 event rest api, но получение начального и конечного времени ошибки должно быть полуночным Я пробовал использовать ниже даты начала & Дата окончания для всего дневного события , например. Дата начала: 01/01/2016 12:00 (дд/ММ/гггг) Дата окончания: 02/01/2016 12:00 (дд/ММ/гггг) Как говорит api, должен быть пробег в 24 часа для всего дневного события я сделал то же самое, что и его ошибка бросания.Вопрос о часовом поясе на Exchange Online с использованием ASP. Приложение Net MVC с использованием Rest api

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

с использованием API 2.0 получение отличия. Несовместимые виды типа были найдены. Тип «Microsoft.OutlookServices.DateTimeTimeZone» был признан «добрым» «Сложным», а не ожидаемым видом «Примитив».

var startDt=new DateTime(2016, 1, 22, 00, 00, 0); 
startDate.DateTime = startDt.ToString(dateTimeFormat); 
startDate.TimeZone = timeZone; 

DateTimeTimeZone endDate = new DateTimeTimeZone(); 
endDate.DateTime = startDt.AddDays(1).ToString(dateTimeFormat); 
endDate.TimeZone = timeZone; 

Event newEvent = new Event 
{ 
Subject = "Test Event", 
Location = location, 
Start = startDate, 
End = endDate, 
Body = body 
}; 

      try 
      { 
       // Make sure we have a reference to the Outlook Services client 
       var outlookServicesClient = await AuthenticationHelper.EnsureOutlookServicesClientCreatedAsync("Calendar"); 

       // This results in a call to the service. 
       await outlookServicesClient.Me.Events.AddEventAsync(newEvent); 
       await ((IEventFetcher)newEvent).ExecuteAsync(); 
       newEventId = newEvent.Id; 
      } 
      catch (Exception e) 
      { 
       throw new Exception("We could not create your calendar event: " + e.Message); 
      } 
      return newEventId; 

ответ

0

Для того, чтобы использовать v2 API, вам нужно v2 library от NuGet (который он выглядит, как вы делаете) ВМЕСТЕ v2 конечную точку (которая по ошибке не являются). Библиотека v2 несовместима с конечной точкой v1, которая вызывает эту ошибку.

В конечной точке v1 Start и End были просто строками даты и времени ISO 8601. В v2 они являются сложными типами.

В v2 вам необходимо указать дату и время начала и окончания с часовыми поясами, а также необходимо установить для события IsAllDay значение true.

OutlookServicesClient client = new OutlookServicesClient(
    new Uri("https://outlook.office.com/api/v2.0"), GetToken); 

Event newEvent = new Event() 
{ 
    Start = new DateTimeTimeZone() 
    { 
    DateTime = "2016-04-16T00:00:00", 
    TimeZone = "Pacific Standard Time" 
    }, 
    End = new DateTimeTimeZone() 
    { 
    DateTime = "2016-04-17T00:00:00", 
    TimeZone = "Pacific Standard Time" 
    }, 
    Subject = "All Day", 
    IsAllDay = true 
}; 

await client.Me.Events.AddEventAsync(newEvent); 

Чтобы сделать это в v1, вам нужно вычислить соответствующие смещения и включить их в ISO 8601 строки (компенсируя DST). Поэтому, поскольку мы находимся в DST, в настоящее время в Pacific используется UTC-7 (вместо стандартного стандарта -8). Вам также необходимо установить свойства StartTimeZone и EndTimeZone. Поэтому я бы сделал что-то вроде:

Event newEvent = new Event() 
{ 
    Start = "2016-04-16T00:00:00-07:00", 
    End = "2016-04-17T00:00:00-07:00", 
    StartTimeZone = "Pacific Standard Time", 
    EndTimeZone = "Pacific Standard Time", 
    Subject = "All Day", 
    IsAllDay = true 
}; 
+0

Да, спасибо Джейсону за решение. Есть ли в любом случае, что я могу создать с помощью v1? Я не хочу обновляться до V2, так как ему нужно будет изменить код существующего кода. Использование V1 Я становлюсь ниже ошибки Ваш запрос не может быть заполнен. Время начала и окончания события в течение всего дня должно быть установлено до полуночи. Я попытался установить IsAllDay = true –

+0

Это немного сложнее, но выполнимо. Вам необходимо установить свойства «StartTimeZone» и «EndTimeZone» в событии, и вам нужно указать ваши «Start» и «End» с соответствующими смещениями (компенсируя переход на летнее время). См. Обновленный ответ. –

+0

Спасибо Джейсону, я пропустил StartTimeZone и EndTimeZone, но не знаю, как я могу управлять смещениями соответственно, не могли бы вы сообщить мне об этом? как я могу указать start и End с соответствующими смещениями. –