Microsoft Graph API中start / timeZone上的日历事件$ filter查询

时间:2019-06-07 14:01:30

标签: microsoft-graph microsoft-graph-calendar

我想通过提供OData v4.0 https://graph.microsoft.com/v1.0/me/calendars/<calendar>/events作为查询参数,将过滤器应用于$filter端点,但将eq应用于start/timeZone结果错误:

$filtersubject eq 'My Subject' and start/dateTime eq '1970-01-01T00:00:00.0000000' and end/dateTime eq '1970-01-01T00:01:00.0000000' and start/timeZone eq 'UTC' and end/timeZone eq 'UTC'时,我回来了:

{
  "error": {
    "code": "InvalidDateTime",
    "message": "The value 'UTC' of parameter 'DateTime' is invalid.",
    "innerError": {
      "request-id": "68f797e2-5059-4a8a-8fc6-0063e31d6498",
      "date": "2019-06-07T13:46:54"
    }
  }
}

文档引用了Prefer: outlook.timezone标头,但仅表示该标头适用于响应,对于解释请求没有任何说明:

  

对于所有返回事件的GET操作,可以使用Prefer:   outlook.timezone标头,用于指定事件开始的时区   和响应的结束时间。

如何过滤(dateTime,timeZone)组合?最好是,如果我不必知道事件的timeZone,而可以基于UTC进行查询,但是我也不知道如何做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

您不能基于timeZone进行过滤,因此也不必如此。所有DateTime值都存储在UTC中。仅当您包含Prefer: outlook.timezone

时,它们才会转换为本地时区

您应该可以简单地使用

subject eq '{subject}' and start/dateTime eq '{date}T{time}' and end/dateTime eq '{date}T{time}'