Я использую Django, поэтому все это выполняется в виртуальной среде, поэтому это может быть причиной моей проблемы (даже если я не знаю, как)
Я создал функцию для разделения строкисодержащие дату и время:
def split_time(time_string, string): # '2018-03-17T05:20:00+01:00'
if string == 'date':
date = time_string.split('T')[0]
return date
elif string == 'time':
pre_time = time_string.split('T')[-1]
time = pre_time.split('+')[0]
return time
в комментарии отображается, какую строку я получаю
Я использую [0]
и [-1]
, потому что по какой-то причине массив заполняется в отрицательном направлении (Я уже создал вопрос из-за того, что дало мне обходной путь использования [-1]
, при необходимости я свяжу вопрос)
здесь я вызываю функцию:
end_event_time = split_time(end, 'time')
test = end_event_time.split(':')
h = test[0]
m = test[1]
print(end_event_time, h, m)
test display['05', '20', '00']
h
дает мне 05
, в то время как m
вызывает ошибку list index out of range
[-1]
отображает 00
Моя проблема в том, чтомне нужно не только вызывать переменные с отрицательными индексами, я могу получить доступ только к первой и последней переменным
Я использую среду Django, но эти тесты отображаются на консоли
Буду признателен за любую помощь!
edit
включает в себя:
from __future__ import print_function
import httplib2
import os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
import datetime
Полная функция выглядит следующим образом:
def is_double(start_date, start_time, end_date, end_time):
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('calendar', 'v3', http=http)
start_date_time = start_date +'T'+ start_time +":00+02:00"
print("testing:", start_date_time )
end_date_time = end_date +'T'+ end_time +":00+02:00"
start_now = datetime.datetime.utcnow().isoformat() + 'Z'
#Getting the upcoming 20 events
eventsResult = service.events().list(calendarId='primary', timeMin=start_now, maxResults=20, singleEvents=True,
orderBy='startTime').execute()
events = eventsResult.get('items', [])
if not events:
print('no event')
return False
for event in events:
start = event['start'].get('dateTime', event['start'].get('date'))
end = event['end'].get('dateTime', event['end'].get('date'))
#up to this line everything is copied from the google api website
#i am getting the 10 upcoming events from a google calendar
end_event_time = split_time(end, 'time')
test = end_event_time.split(':')
h = test[0]
m = test[-1]
print(end_event_time,test, h, m)
return true
Вывод:
05:20:00 ['05', '20', '00'] 05 00
01:03:00 ['01', '03', '00'] 01 00
Примечание. Чтобы проверить этотребуется подключение к календарю Google, но я получаю тот же вывод, если я использую end_event_time = '05:20:00'
вместо моего split_time (), поэтому я почти уверен, что он не имеет никакого отношения к API календаря.