3

Calendar v3 API を使用して、Google カレンダーで終日のイベントを作成、クエリ、および変更するアプリがあります。これらのイベントを作成すると、次のようになります。

{ 
  summary: 'My Event",
  start: { date: '2014-07-26' },
  end: { date: '2014-07-26' } 
}

したがって、7 月 20 日から 7 月 26 日までのすべてのイベントをクエリする場合は、次のようなクエリを送信します。

GET www.googleapis.com/calendar/v3/{calendarID}/events?timeMin=2014-07-20T00%3A00%3A00.000Z&timeMax=2014-07-26T00%3A00%3A00.000Z

より読みやすい形式では、パラメーターは次のとおりです。

timeMin:2014-07-20T00:00:00.000Z
timeMax:2014-07-26T00:00:00.000Z

ただし、これは date のすべてのイベントを除外し2014-07-26、20 日から 25 日のイベントのみを取得します。setUTCHours(0)私のパラメーターでは、タイムゾーン情報を持たないために使用したことがわかります。

およびパラメータsetUTCHours(0)の呼び出しを削除すると、逆の問題が発生します。7/21 から 7/26 まで取得し、7/20 のイベントを見逃してしまいます。任意のタイム ゾーンでその週のすべての終日イベントを確実に取得するにはどうすればよいですか?timeMintimeMax

4

3 に答える 3

4

ちょうどこれに出くわしました。フィルタリングの場合、終了時間は排他的ですが、開始時間は包括的です。ここでイベントの仕様を参照してください。おそらく、時刻ではなく日付のみを指定すると、UTC 00:00:00 のように扱われるため、その日は含まれません。しかし、それは私の側の推測にすぎません。とにかく、終了日に +1 すると、期待どおりに機能するはずです。

于 2014-08-05T23:13:42.203 に答える
2

週の両側で +1 日を要求し、興味のないイベントを事後フィルター処理します。

于 2014-08-04T10:11:02.663 に答える
1

問題は、イベントの作成方法にありました。date に終日イベントを作成するには、 toとto1を設定する必要があります。startxendx + 1 day

  var dateStringStart = dateToString(dateObj);
  var dateObjEnd = new Date(dateObj.getTime() + (24 * 60 * 60 * 1000));
  var dateStringEnd = dateToString(dateObjEnd);

  gapi.client.request({
    path: '/calendar/v3/calendars/' + id + '/events',
    method: 'POST',
    body: {
      summary: name,
      start: {
        date: dateStringStart
      },
      end: {
        date: dateStringEnd
      }
    },
    callback: function(eventObj) {
      // ...
    }
  });
于 2014-08-08T17:34:35.023 に答える