getEvents()返回的事件不在我正在寻找的时间范围内

时间:2015-07-09 15:59:50

标签: javascript google-apps-script

我在一周内搜索所有活动。

//from = Mon Jul 06 00:02:00 GMT+01:00 2015
//until = Fri Jul 10 00:00:00 GMT+01:00 2015
var events = calendar.getEvents(from,until);

这回事给我这个事件,不是在那个时间范围内,我有什么遗漏吗?

Event 1:
Start time: Sat Jul 04 2015 00:00:00 GMT+0100 (BST)
End Time: Mon Jul 06 2015 00:00:00 GMT+0100 (BST)

它只查找日期而非日期时间内的事件吗?根据此处的文档:https://developers.google.com/apps-script/reference/calendar/calendar#geteventsstarttime-endtime

  

如果事件在时间范围内开始,在时间范围内结束或包含时间范围,则将返回事件。如果未指定时区,则在脚本的时区上下文中解释时间值,该时区可能与日历的时区不同。

此外,在文档中提供的示例中,它正在寻找2小时时间范围内的事件。

注意,日历和脚本都在同一时区。

谢谢!

-------编辑-------

为了生成日期,我从一个字段中获取一个值,然后从那里生成它:

var day = aux_s.getRange(4,4);
var month = aux_s.getRange(5,4);
var year = aux_s.getRange(6,4);

var initialdate = new Date(year.getValue(), month.getValue()-1, day.getValue(), 0, 0, 0, 0)
var until = new Date(initialdate);
var from = new Date(initialdate.getTime() + (2 * 60 * 1000));
until.setDate(until.getDate()+4);

我记录它时显示的值是:

//from = Mon Jul 06 00:02:00 GMT+01:00 2015
//until = Fri Jul 10 00:00:00 GMT+01:00 2015

然而,它仍然会选择最终于06:00 00:00 GMT + 01:00结束的活动。

1 个答案:

答案 0 :(得分:0)

注意:如果您觉得这应该是评论,我很抱歉,但我觉得分享我的代码和输出将是一个更好理解的格式,并且会增加我想要展示的价值。

我不知道你是如何设定日期和时间的,但我刚试过这个:

function getCalEvents()
{
  var cal = CalendarApp.getCalendarById('******@gmail.com');
  var from = new Date('July 6, 2015 06:00:00 AM PST');
  var until = new Date('July 9, 2015 06:00:00 PM PST');

  var events = cal.getEvents(from, until);
  Logger.log(events.length);
  Logger.log(from);
  Logger.log(until);

  for (var i=0; i<events.length; i++)
  {
    Logger.log(events[i]);
  }
}

我从上面的代码收到的日志输出是:

[15-07-09 18:47:34:162 PDT] 3.0
[15-07-09 18:47:34:163 PDT] Mon Jul 06 07:00:00 GMT-07:00 2015
[15-07-09 18:47:34:164 PDT] Thu Jul 09 19:00:00 GMT-07:00 2015
[15-07-09 18:47:34:166 PDT] CalendarEvent
[15-07-09 18:47:34:167 PDT] CalendarEvent
[15-07-09 18:47:34:167 PDT] CalendarEvent

我建议您使用Logger检查脚本接受的日期和时间。我已经测试了多个场景,App脚本正在返回所需的结果。

修改 在Mogsdad指出这一点之前,我从未注意到PST-PDT的区别。因此,正如他所建议的那样,只留下一个时区不匹配的可能性作为这个问题的可能解释。