创建一个';全天';在python中使用google日历api的事件

创建一个';全天';在python中使用google日历api的事件,python,calendar,google-api,google-calendar-api,Python,Calendar,Google Api,Google Calendar Api,我正在使用谷歌日历api从另一个网站向谷歌日历添加事件。当我尝试创建一个全天类型的活动时,我遇到了一个问题。我可以很容易地将datetime.timedelta(days=1)添加到datetime对象中,该对象从上午12点开始,但创建的事件从00:00开始,到23:59结束,而不是全天事件(有区别) 在和的语言中也有类似的问题,但在python中没有 GoogleAPI事件创建文档是。在Python中,基本上是提交一个简单的json对象来创建一个定义了事件参数的事件 以下是我尝试全天活动的代码

我正在使用谷歌日历api从另一个网站向谷歌日历添加事件。当我尝试创建一个全天类型的活动时,我遇到了一个问题。我可以很容易地将datetime.timedelta(days=1)添加到datetime对象中,该对象从上午12点开始,但创建的事件从00:00开始,到23:59结束,而不是全天事件(有区别)

在和的语言中也有类似的问题,但在python中没有

GoogleAPI事件创建文档是。在Python中,基本上是提交一个简单的json对象来创建一个定义了事件参数的事件

以下是我尝试全天活动的代码:

creds = customer.get_calendar_creds()
http = creds.authorize(httplib2.Http())
service = discovery.build('calendar', 'v3', http=http)
calendar = service.calendars().get(calendarId=customer.calendar_id or 'primary').execute()
tz_string = calendar['timeZone']
gc_tz = pytz.timezone(tz_string)
start_time = gc_tz.localize(parser.parse(calendar_event_form.cleaned_data['date']))
end_time = start_time + datetime.timedelta(days=1)
start_string = start_time.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
start_string = start_string[:-8] + start_string[-5:]  # removing miliseconds
end_string = end_time.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
end_string = end_string[:-8] + end_string[-5:]
event = {
    'summary': calendar_event_form.cleaned_data['name'],
    'location': calendar_event_form.cleaned_data['location'],
    'description': calendar_event_form.cleaned_data['description'],
    'start': {
        'dateTime': start_string,
        'timeZone': tz_str,
    },
    'end': {
        'dateTime': end_string,
        'timeZone': tz_str,
    },
}
event = service.events().insert(calendarId=customer.calendar_id or 'primary', body=event).execute()
这段代码“有效”,但我用它创建的事件与我在谷歌日历上创建的事件和标记为全天事件之间有着明显的区别。下面是一个简单的图像,显示了不同之处:

我尝试过的事情:

  • 仅定义没有结束时间的开始时间(中断)

  • 发送日期仅以字符串“2015-07-13”表示开始,以字符串“2015-7-14”表示结束(断开)

  • 发送“2015-07-13T00:00:00-0700”作为开始,发送“2015-07-14T00:00:00-0700”和“2015-07-13T23:59:59-0700”作为结束(一个在同一天完成,另一个在下一天持续1秒)


我来到这里的希望是过去有人已经解决了这个问题,我不可能是唯一一个使用python希望能够做这种事情的人,可以吗?

我猜你是这么说的-

发送日期仅以字符串“2015-07-13”表示开始,以字符串“2015-7-14”表示结束(断开)

您尝试发送
datetime
字段中的
date
,根据-

开始.date-date-如果这是一个全天事件,则为格式为“yyyy-mm-dd”的日期

end.date-date-日期-如果是全天活动,则为格式为“yyyy-mm-dd”的日期

尝试在
date
字段的
yyyy-mm-dd
格式中发送日期。范例-

event = {
    'summary': calendar_event_form.cleaned_data['name'],
    'location': calendar_event_form.cleaned_data['location'],
    'description': calendar_event_form.cleaned_data['description'],
    'start': {
        'date': start_string, #date here
        'timeZone': tz_str,
    },
    'end': {
        'date': end_string, #date here
        'timeZone': tz_str,
    },
}