繁体   English   中英

Microsoft Graph API CalendarView请求不起作用

[英]Microsoft Graph API CalendarView request not working

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

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格式,以便以要求的正确日期时间格式(ISO 8601)进行图形API的请求。

结果日期时间为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 pm。 谁能告诉我为什么日期范围不起作用? 我正在尝试找出原因,但是对我而言什么也没有发生。

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

该活动原定于午夜举行,而不是原定于UTC午夜举行,而是其他时区。 例如,如果事件安排在美国东部时间进行,则时区将为UTC - 5 当10/18/2018 @ EST 12:00 AM转换为UTC 0它比UTC 0早5个小时,即10/17/2018 @ 8:00 PM。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM