0

在我的程序中,我使用 google-api-python-client 连接到日历 API。我通过以下方式查询未来 3 天的事件:

service = build(serviceName='calendar', version='v3', http=http)
events = service.events().list(
      calendarId=calendarId,
      timeMin='2013-01-04T00:00:00+01:00',
      timeMax='2013-01-06T00:00:00+01:00').execute()

结果是一个事件列表,在 Python 字典中建模,大致如下(我省略了一些不必要的数据):

{
     u'created': u'2012-11-26T00:54:43.000Z',
     u'description': u'abc abc',
     u'start': {u'dateTime': u'2012-11-26T08:00:00+01:00',
                u'timeZone': u'Europe/Copenhagen'},
     u'end': {u'dateTime': u'2012-11-26T10:00:00+01:00',
              u'timeZone': u'Europe/Copenhagen'},
     u'kind': u'calendar#event',
     u'recurrence': [u'RRULE:FREQ=DAILY'],
     u'sequence': 0
}

上述事件是重复事件,创建于几个月前,“开始”和“结束”字段反映了创建日期。结果列表中将有该事件的多个副本,因为它在 'timeMin' 和 'timeMax' 范围之间发生了多次。

现在,问题是我没有确切发生事件的日期时间(在这种情况下应该是 2013-01-04T00:08:00+01:00)。任何人都知道我是否可以从 Google Calendar API 获得那个时间(我通过他们的 python 包使用版本 3)?

或者会建议如何在客户端实现它?

4

2 回答 2

3

在https://developers.google.com/google-apps/calendar/v3/reference/events/list再次阅读文档

我发现我忽略了这一点:

singleEvents 布尔值

是否将循环事件展开为实例,只返回单个一次性事件和循环事件的实例,而不返回底层循环事件本身。选修的。默认值为假。

于 2013-01-03T20:24:04.357 回答
0

查看开始字段和重复字段。我会使用 Python 日期时间 API 来计算它发生的日期。

如果是每天,那么每天直到重复结束。请注意,重复字段也可以包含事件重复的次数,因此您必须计算它。如果您想了解如何计算这些东西的详细信息,我可以编写一个代码示例。请注意,datetime API 可以处理将日期添加到日期等,因此应该很容易计算。它可以计算两个日期之间的差异,因此也可以计算它已经发生的次数。

编辑:查看以下链接:

iCal 重复格式
日期时间文档

于 2013-01-03T19:47:55.580 回答