Невозможно обновить значение DateTime для начала и конца IEvent Office 365

Я использую DLL-библиотеку Office 365 V2 и пытаюсь обновить значение DateTime для свойств начала и конца IEvent, но не удается обновить событие без каких-либо ошибок.

Мой код:-

        try
        {
            var taskUpdateMeeting = Task<bool>.Run(async () =>
            {
                bool updateStatus = false;
                IEvent meetingToUpdate = await service.Me.Events.GetById(meetingEventId).ExecuteAsync();
                if (meetingToUpdate != null)
                {    
                    meetingToUpdate = GetUpdatedEvent(meetingToUpdate, meeting, location, phone);    // Function to update the IEvent Obj values needed to update
                    meetingToUpdate.Start.DateTime = "2016-08-06T19:00:00.0000000";        // Sample value to DateTime property
                    meetingToUpdate.End.DateTime = "2016-08-06T19:30:00.0000000";
                    meetingToUpdate.Start.TimeZone = "Asia/Kolkata";        // Sample value to TimeZone property
                    meetingToUpdate.End.TimeZone = "Asia/Kolkata";

                    if (invitees != null && invitees.Count > 0)
                        invitees.ForEach((invitee) => meetingToUpdate.Attendees.Add(new Attendee()
                        {
                            EmailAddress = new EmailAddress()
                            {
                                Name = invitee.Name,
                                Address = invitee.Email
                            },
                            Status = new ResponseStatus()
                            {
                                Response = ResponseType.Accepted,
                                Time = DateTime.Now
                            }
                        }));
                    await meetingToUpdate.UpdateAsync(true);
                    await meetingToUpdate.SaveChangesAsync();
                    //await meetingToUpdate.SaveChangesAsync();
                    //await service.Context.SaveChangesAsync();


                    updateStatus = true;
                }
                return updateStatus;
            });
            Task.WaitAll(taskUpdateMeeting);
            updated = taskUpdateMeeting.Result;
        }
        catch (Exception ex)
        {
            InsertExceptionLog(userID, username, "UpdateCalendarEvent Excp -> " + ex.GetType(), ex.Message, ex.InnerException != null ? ex.InnerException.ToString() : null, ex.ToString() + ex.StackTrace);
            updated = false;
        }

Единственная проблема - время начала и окончания. Все остальные свойства корректно обновляются при вызове метода UpdateAsync. Изначально собрание находится в том же часовом поясе, что и в обновленном свойстве TimeZone. Пожалуйста, предложите, если я делаю что-то не так здесь. Дайте мне знать, если требуется какая-либо другая информация.

1 ответ

Вместо того, чтобы устанавливать дату и часовой пояс напрямую, мы можем установить свойства Start и End. Пример ниже работает хорошо для меня:

DateTimeTimeZone newStart = new DateTimeTimeZone();
newStart.DateTime= "2016-08-06T19:00:00.0000000";
newStart.TimeZone = "Asia/Kolkata";

DateTimeTimeZone newEnd = new DateTimeTimeZone();
newEnd.DateTime = "2016-08-06T19:30:00.0000000";
newEnd.TimeZone = "Asia/Kolkata";
Другие вопросы по тегам