2017-06-13 5 views
0

私は現在カレンダーのイベントに取り組んでおり、2つの日付の間だけイベントを取得したいと考えています。 私は、比較演算子 'le'をmsgraph APIで使用したいと思いますが、正しく動作しません。それは 'lt'のように働いているようです。私は 'ge'に問題はない。ここでodata以下を使用msgraph

は私のJSONのイベントが/終了日を開始している。ここで

"start": { 
    "dateTime": "2017-06-13T12:00:00.0000000", 
    "timeZone": "UTC" 
}, 
"end": { 
    "dateTime": "2017-06-13T15:00:00.0000000", 
    "timeZone": "UTC" 
} 

は私のクエリです:

https://graph.microsoft.com/v1.0/groups/{groupId}/events?$filter=(start/dateTime ge '2017-06-13' and end/dateTime le '2017-06-13') 

このクエリは何も返しません!私は開始日または終了日のみを試しましたが、同じ結果です。

誰でもこの問題の何が問題なのか教えていただけますか?

答えて

1

パラメータ "start/dateTime"と "end/dateTime"は、基本的にdateTime値of a single point of timeです。

"2017-06-13"の日付と比較して "(start/dateTime ge '2017-06-13'とend/dateTime le '2017-06-13') 'を実行すると、実際には"(start/dateTime ge '2017-06-13T00:00:00.0000000'とend/dateTimel '2017-06-13T00:00:00.0000000')"と比較します。

上記の記録は、あなたがEventsではなくCalendarViewを使用する必要があり、操作のこのタイプの通常

https://graph.microsoft.com/v1.0/groups/{groupId}/events?$filter=(start/dateTime ge '2017-06-13T00:00:00.0000000' and end/dateTime le '2017-06-13T23:59:59.0000000') 
+0

おかげスーディープ、あなたが正しいです! 私の日付の後に自動的に時刻が追加されますが、それは問題ありません。 –

1

私は、問題の一部は、開始時刻と終了時刻の両方で同じ値を使用していると推測しています。これは「6月13日のイベント」を意味するものではありません。代わりに、「開始時刻が2017-06-13 00:00:00 UTC以上で、終了時刻が2017-06-13 00:00:00 UTC以下のイベント」を意味します。なぜ私は開始日だけで働かないとうまくいかないのか説明できません。

グラフエクスプローラでも同様のクエリが使用できます。https://developer.microsoft.com/en-us/graph/graph-explorer?request=me/events?$filter=start/dateTime ge '2016-06-01' and end/dateTime le '2016-06-02'&method=GET&version=v1.0

ただし、おそらく実際には欲しいものはcalendarViewです。 eventsはイベントの生のリストであり、calendarViewは再発を考慮しています。

0

でクエリを更新します。CalendarViewは、ユーザーが通常Outlook内を参照するのと同じ結果を返します。

また、1日を検索する場合は時刻を指定する必要があります。それ以外の場合は、深夜に開始および終了する予定のみが返されます。別の方法としては、(真夜中にすなわち真夜中)回ずに次の日を使用することができます。

https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2017-06-13&enddatetime=2017-06-14

関連する問題