我正在创建dict obj并将其发送到谷歌日历,就像谷歌自己的API文档中的示例一样。我读了一个mssql数据库,然后生成结果的csv文件。然后我使用cdv信息来编写事件。
我的代码中的代码段。
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)
但是,我想知道是否有人知道发生这种情况的原因?
答案 0 :(得分:3)
它隐藏了,但我发现了它: -
https://developers.google.com/google-apps/calendar/concepts
此类事件从startDate开始,到endDay前一天结束。例如,一天的活动应将其开始日期设置为日期,将结束日期设置为日期+1。
所以我已修复此问题: -
fdate = fdate + timedelta(days=1)