好的,所以我已经看到了与此类似的问题,但其中大多数是关于不同语言的,似乎没有一个属于 Python 领域。我还在 Google 上的文档中搜索了在日历中列出事件的不同选项。谷歌没有列出按州日期顺序限制结果的方法,只有开始时间。
所以,我希望有人可以帮助我从日历中检索事件,让它们按顺序排列,同时将结果限制在特定日期。最好我不想让任何事件超过 30 天,并按开始时间和日期排序。我的猜测,虽然我不确定最好的方法,但可能是获取所有事件,将它们放入列表或字典中,然后按我想要的顺序枚举该列表或字典,然后做一些if 语句从列表或字典中删除超过 30 天的任何内容。下面是我正在使用的代码,然后是我在终端中得到的响应。正如你所看到的,我得到了一年后的日期,而且它们都出了问题。哦,这样你就不会感到困惑,这段代码是从我在谷歌整个日历的多个部分中提取的。此外,您会注意到我将结果限制为最多 5 个以使测试更容易,因此我没有返回 100 个结果。
try:
# ----- Facebook Birthday Calendar -----
page_token = None
interval = 0
while True:
events = service.events().list(calendarId='my calendar id', pageToken=page_token).execute()
for event in events['items']:
if interval < 5:
dt = dateutil.parser.parse(event['start']['date'])
print event['summary'], dt.strftime('%d %m %Y')
page_token = events.get('nextPageToken')
interval += 1
else:
break
if not page_token:
break
print "-----"
# ----- My Gmail Calendar -----
page_token_two = None
interval_two = 0
while True:
events_two = service.events().list(calendarId='my calendar id', pageToken=page_token_two).execute()
for event_two in events_two['items']:
if interval_two < 5:
dt_two = dateutil.parser.parse(event_two['start']['dateTime'])
dstime_two = dateutil.parser.parse(event_two['start']['dateTime'])
detime_two = dateutil.parser.parse(event_two['end']['dateTime'])
print event_two['summary'] + " " + dt_two.strftime('%d %m %Y') + " " + dstime_two.strftime('%H%M') + "-" + detime_two.strftime('%H%M')
# print event_two['summary'], dt_two.strftime('%d %m %Y')
page_token_two = events_two.get('nextPageToken')
interval_two += 1
else:
break
if not page_token_two:
break
print "-----"
# ----- US Holidays Calendar -----
page_token_three = None
interval_three = 0
while True:
events_three = service.events().list(calendarId='my calendar id', pageToken=page_token_three).execute()
for event_three in events_three['items']:
if interval_three < 5:
dt_three = dateutil.parser.parse(event_three['start']['date'])
print event_three['summary'], dt_three.strftime('%d %m %Y')
page_token_three = events_three.get('nextPageToken')
interval_three += 1
else:
break
if not page_token_three:
break
print "-----"
结果:
Person's Birthday 17 03 2014
Person's Birthday 20 09 2013
Person's Birthday 10 09 2013
Person's Birthday 17 04 2014
Person's Birthday 29 04 2014
-----
Work 12 04 2013 1430-2330
Work 15 04 2013 1415-2315
Work 22 04 2013 1415-2315
Work 25 04 2013 1405-2305
Work 29 04 2013 0640-0230
-----
Patriot Day 11 09 2012
Thanksgiving 28 11 2013
Groundhog Day 02 02 2014
Memorial Day 28 05 2012
Lincoln's Birthday 12 02 2013
-----