Google Calendar API 事件总是少一天
我正在创建一个字典对象,然后把它发送到谷歌日历,参考的是谷歌自己在API文档中的示例。我从一个mssql数据库读取数据,然后生成一个csv文件来保存结果。接着,我使用这些csv信息来写入事件。
这是我代码中的一些片段。
def count_leaveduration(sdate, fdate):
try:
date_format = "%Y.%m.%d"
cmp_sdate = datetime.strptime(sdate, date_format)
cmp_fdate = datetime.strptime(fdate, date_format)
delta = cmp_fdate - cmp_sdate
return delta.days, cmp_sdate, cmp_fdate
except Exception as e:
input_logging('error', 'Cannot Count Leave Duration - Exception: %s' % e)
duration, sdate, fdate = count_leaveduration(line['FIRSTDAYOFABSENCE'], line['LASTDAYOFABSENCE'])
event['summary'] = '%s - Leave' % line['NAME1']
event['location'] = 'Out Of Office'
# date type here instead because all day event for duration.
event['start'] = {'date': '%s' % sdate.strftime('%Y-%m-%d')}
event['end'] = {'date': '%s' % fdate.strftime('%Y-%m-%d')}
event['attendees'] = [{'email': line['ELECTRONICMAILADDRESS']}]
appbuildobj.events().insert(calendarId=robj, body=event).execute()
这些条目在一般情况下工作得很好,但如果事件的持续时间超过一天,日历上的条目似乎会少一天,尽管我传递给日历事件字典的日期应该是结束日期。当然,解决这个问题的方法是这样做:
fdate = fdate + timedelta(days=1)
不过,我想知道有没有人知道为什么会发生这种情况?
1 个回答
4
虽然这个信息隐藏得比较深,但我找到了:-
https://developers.google.com/google-apps/calendar/concepts
这样的事件是从开始日期(startDate)开始,到结束日期(endDay)前一天结束。举个例子,如果是一天的活动,开始日期应该设置为那一天,结束日期则设置为那一天加上一天。
所以我用以下代码修复了这个问题:-
fdate = fdate + timedelta(days=1)