C#Google Calendar API忽略事件TimeMin / TimeMax

时间:2014-11-13 01:25:56

标签: c# google-api google-calendar-api google-api-dotnet-client

我正在尝试使用Google .Net客户端库来查询Google日历活动。

我成功地删除了事件,但它似乎完全忽略了TimeMin和TimeMax,并在该时间范围之外返回事件。

作为测试,我从昨天这个时间到明天这个时间AddDays()扩大了这个窗口。

我的代码是:

    EventsResource.ListRequest req = service.Events.List(calendarId);

    // Limit the calendar to today
    req.TimeMin = DateTime.Now.AddDays(-1);
    req.TimeMax = DateTime.Now.AddDays(1);

    var events = req.Execute().Items;

今天(2014年12月11日......所以2014年11月11日至2014年11月13日使用上面的代码)这是从11/5/14返回的事件。

使用.Net库,这两个属性被定义为可以为空的DateTime对象(DateTime?),所以我没有将这些属性字符串格式化为任何标准。

我在这里做错了吗?

编辑:我遇到了以下链接。如果此信息为真,那么从.Net处理这个字段的具体方式是DateTime?

  

/ events / list接受timeMin和timeMax参数,这些是   简单地说是接受'​​日期时间'的论点。无数的   可能的标准化日期时间格式,我发现了这一点   value应为UTC日期时间(偏移量明确设置为00:00)   格式为RFC3339(yyyy-MM-ddThh:mm:ss.sss + 00:00)。

Google Calendar API v3 Undocumentation

1 个答案:

答案 0 :(得分:3)

我可以通过将SingleEvents属性设置为true来实现此功能。

似乎某些显示日期范围的项目是重新发生的事件。将SingleEvents设置为true表示重新发生的事件属于TimeMin / TimeMax指定的日期范围。

    EventsResource.ListRequest req = service.Events.List(calendarId);

    // Limit the calendar to today
    req.TimeMin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
    req.TimeMax = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);

    req.SingleEvents = true;

    var events = req.Execute().Items;