Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 谷歌日历API查询全天事件_Date_Datetime_Google Api_Google Calendar Api_Google Api Js Client - Fatal编程技术网

Date 谷歌日历API查询全天事件

Date 谷歌日历API查询全天事件,date,datetime,google-api,google-calendar-api,google-api-js-client,Date,Datetime,Google Api,Google Calendar Api,Google Api Js Client,我有一个应用程序,它使用CalendarV3API创建、查询和修改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}/e

我有一个应用程序,它使用CalendarV3API创建、查询和修改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
但是,这不包括日期为2014-07-26的所有事件,它只获得20日至25日的事件。在我的参数中,您可以看到我使用了
setUTCHours(0)
,以便没有时区信息


如果我删除了对
timeMin
timeMax
参数的
setUTCHours(0)
调用,那么我就遇到了相反的问题,我得到了7/21到7/26,错过了7/20的事件。我如何才能可靠地获取一周中任何时区的所有全天事件?

我会要求每周两周都有+1天的时间,然后对不感兴趣的事件进行后期筛选。

我自己刚刚遇到这个问题。对于筛选,结束时间是独占的,而开始时间是包含的。看见大概当您只指定一个日期而不是时间时,它会将其视为UTC的00:00:00,所以不包括这一天。但这只是我的猜测。无论如何,如果你在结束日期前+1,它应该按照你期望的方式工作。

问题在于我是如何创建事件的。要在日期
1
创建全天事件,您应将
开始
设置为
x
,将
结束
设置为
x+1天

  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) {
      // ...
    }
  });

我同意这样做是可行的,但是我正在寻找一个答案,解释为什么API会以这种方式工作,而不仅仅是一种解决方法。