Microsoft Graph API CalendarView запрос не работает - PullRequest
0 голосов
/ 18 октября 2018

Вот мой фрагмент кода, который обрабатывает и обрабатывает определенную дату:

def o365_calendar_parse_url(self):
    if validate_params(self.parameters):
        data_url = self.o365_base_url + self.SUPPORTED_O365_INTENTS_URL['O365_CALENDAR_PARAMS']
        start_date = ''
        end_date = ''
        if self.parameters["date"]:
            split_date = self.parameters["date"].split("T")[0]
            start_date = split_date
            start_date = date_utilities.parse(start_date)
            print(start_date)
            end_date = start_date + datetime.timedelta(days=1)
            final_url = data_url.format(start_date, end_date)
            return final_url
        else:
            #other stuff

Таким образом, получаемая дата: 2018-10-18T12:00:00-06:00, идея состоит в том, чтобы удалить время из этой даты (потому что это неоднозначно), так как у меня нет доступа к API, и поэтому я должен иметь дело с ним так, как он отправляется.После этого идея состоит в том, чтобы проанализировать эту дату в формате ISO 8601, чтобы запрос, выполненный для API-интерфейса Graph, выполнялся в правильном формате даты и времени (ISO 8601).

Итоговая дата и время 2018-10-18 00:00:00.Когда запрос сделан, полученный URL-адрес:

https://graph.microsoft.com/v1.0/me/calendarView?startDateTime=2018-10-18%2000:00:00&endDateTime=2018-10-19%2000:00:00&$select=subject,bodyPreview,start,end,location,organizer,webLink

, который возвращает 1 событие между 18-м и 19-м.Кажется, все в порядке, за исключением того, что между 18th 00:00:00 и 19th 00:00:00.

есть два события: одно из них происходит 18-го числа в 12 часов, а другое - в 8:30 вечера.Может кто-нибудь сказать мне, почему диапазон дат не работает?Я пытаюсь понять, почему, но со мной ничего не происходит.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

После долгих испытаний мне удалось проанализировать входящую дату, сбросить время до 0 часов и установить часовой пояс в формате UTC с помощью следующей общей функции:

def to_utc_iso(date_string):
    the_date = parser.parse(date_string)
    string_date = the_date.replace(hour=0, tzinfo=timezone.utc).timestamp()
    return datetime.fromtimestamp(string_date).isoformat()
0 голосов
/ 19 октября 2018

Вы не указываете часовой пояс, поэтому 2018-10-18 00:00:00 рассматривается как UTC 0.

Событие, запланированное на полночь, скорее всего, не , запланированное на полночь UTC, а скорее какой-то другой часовой пояс.Например, если мероприятие было запланировано на восток США, часовой пояс будет UTC - 5.Когда 18.10.08 @ 12:00 EST переводится на UTC 0, это на 5 часов раньше или 17.10.2008 @ 20:00 UTC.

Чтобы получить событие в определенном часовом поясе, вам нужно добавить смещение.Например:

2018-10-18T00:00:00-05:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...