【问题标题】:Microsoft Graph API CalendarView request not workingMicrosoft Graph API CalendarView 请求不起作用
【发布时间】:2018-10-17 22:35:05
【问题描述】:

这是我处理和处理特定日期的一段代码:

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 的请求以所要求的正确日期时间格式 (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

这会在 18 日和 19 日之间带来 1 场活动。似乎没问题,除了 18th 00:00:0019th 00:00:00 之间实际上有 2 个事件。

其中一项活动在 18 日中午 12 点举行,另一项活动在晚上 8 点 30 分举行。谁能告诉我为什么日期范围不起作用?我试图找出原因,但我什么也没有发生。

【问题讨论】:

    标签: python microsoft-graph-api outlook-restapi


    【解决方案1】:

    您没有指定时区,因此2018-10-18 00:00:00 被视为UTC 0

    安排在午夜的事件很可能不是安排在 UTC 午夜,而是安排在其他时区。例如,如果活动安排在美国东部,则时区为UTC - 5。当 2018 年 10 月 18 日 @ 12:00 AM EST 转换为 UTC 0 时,它提前 5 小时,或 2018 年 10 月 17 日 @ 8:00 PM UTC。

    要在特定时区获取事件,您需要添加偏移量。例如:

    2018-10-18T00:00:00-05:00
    

    【讨论】:

      【解决方案2】:

      经过大量测试,我能够解析传入的日期,将它的时间重置为 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()
      

      【讨论】:

        猜你喜欢
        • 2022-08-26
        • 2018-06-24
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 2020-02-01
        相关资源
        最近更新 更多