График событий Microsoft Outlook API: как получить другой часовой пояс? - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь получить события календаря Microsoft. Часовой пояс по умолчанию для моей учетной записи Outlook - часовой пояс США. Но ответ, который я получаю от остальных звонков API, находится в UTC. Как я могу получить свой часовой пояс по умолчанию, т.е. восточное время США?

Вот мой код:

def make_api_call(method, url, token, payload = None, parameters = None):
  headers = { 'User-Agent' : 'python_tutorial/1.0',
              'Authorization' : 'Bearer {0}'.format(token),
              'Accept' : 'application/json'}

  request_id = str(uuid.uuid4())
  instrumentation = { 'client-request-id' : request_id,
                      'return-client-request-id' : 'true' }

  headers.update(instrumentation)

  response = None

  if (method.upper() == 'GET'):
      response = requests.get(url, headers = headers, params = parameters)
  elif (method.upper() == 'POST'):
      headers.update({ 'Content-Type' : 'application/json' })
      response = requests.post(url, headers = headers, data = json.dumps(payload), params = parameters)

  return response

def get_my_events(access_token, start_date_time, end_date_time):
    get_events_url = graph_endpoint.format('/me/calendarView')
    query_parameters = {'$top': '10',
    '$select': 'subject,start,end,location',
    '$orderby': 'start/dateTime ASC',
    'startDateTime': start_date_time,
    'endDateTime': end_date_time}

    r = make_api_call('GET', get_events_url, access_token, parameters = query_parameters)
    if (r.status_code == requests.codes.ok):
        return r.json()
    else:
        return "{0}: {1}".format(r.status_code, r.text)

UPDATE:

Если кто-то еще придет сюда для такого рода вопросов, вам необходимо обновить заголовки, чтобы отправить любой конкретный часовой пояс. Вот заголовки обновления, убедитесь, что вы заключили часовой пояс в двойные кавычки:

  headers = { 'User-Agent' : 'python_tutorial/1.0',
              'Authorization' : 'Bearer {0}'.format(token),
              'Accept' : 'application/json',
              'Prefer': 'outlook.timezone="Eastern Standard Time"'}

1 Ответ

0 голосов
/ 08 мая 2018

Необходимо указать часовой пояс с помощью заголовка Prefer: outlook.timezone.

Из документации :

Предпочтение: outlook.timezone

Используйте это, чтобы указать часовой пояс для времени начала и окончания в ответе. Если не указано, эти значения времени возвращаются в UTC.

Например, чтобы установить значение US Eastern, вы должны отправить

Prefer: outlook.timezone="Eastern Standard Time"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...