1

我想通过提供 OData v4.0作为查询参数来将过滤器应用于https://graph.microsoft.com/v1.0/me/calendars/<calendar>/events端点,但应用到会导致错误:$filtereqstart/timeZone

$filter什么subject 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) 组合?如果我不必知道事件的时区,而是可以根据 UTC 进行查询,那将是最好的,但我也不知道该怎么做。

谢谢!

4

1 回答 1

1

您不能过滤,也不timeZone应该过滤。所有 DateTime 值都以 UTC 格式存储。仅当您包含它们时,它们才会转换为本地时区Prefer: outlook.timezone

你应该能够简单地使用

subject eq '{subject}' and start/dateTime eq '{date}T{time}' and end/dateTime eq '{date}T{time}'
于 2019-06-07T17:28:43.890 回答