Python Time()库请求无法访问的格式

Python Time()库请求无法访问的格式,python,python-3.x,time,google-api,integer,Python,Python 3.x,Time,Google Api,Integer,在谷歌议程上做测试时,我想做一个测试,看看当前是否有事件发生。 我的方法是检查当前时间(由时间库提供) 然后使用描述,再次使用时间库进行比较 datetime.now().time() print(event['start'].get('dateTime', event['start'].get('date'))) # Will output 2021-02-09T10:45:00+01:00 然后我解析它以获得: event_start = (start.split("T&quo

在谷歌议程上做测试时,我想做一个测试,看看当前是否有事件发生。 我的方法是检查当前时间(由时间库提供)

然后使用描述,再次使用时间库进行比较

datetime.now().time()
print(event['start'].get('dateTime', event['start'].get('date'))) # Will output 2021-02-09T10:45:00+01:00
然后我解析它以获得:

event_start = (start.split("T", 1)[1]).split("+")[0][:-3].replace(":", ",")
print(event_start) # Will output 10,45 which is the beginning of the event
最后,我使用我在stackoverflow上找到的这个函数,通过检查当前时间是否在事件开始和结束之间来查看我们是否处于事件中

def is_time_between(begin_time, end_time, check_time=None):
check_time = check_time or datetime.now().time()
if begin_time < end_time:
    return check_time >= begin_time and check_time <= end_time
else:
    return check_time >= begin_time or check_time <= end_time
但是当我在上一个事件中使用它时,我得到

time(event_start)
#TypeError: an integer is required (got type str)
我知道你会告诉我用int来转换它,但我会在coma 10.1->10之后释放数据,并且不接受浮点

最后,我的主要问题是:考虑到输入是:


{'dateTime':'2021-02-09T12:15:00+01:00','timeZone':'Europe/Paris'},'end':{'dateTime':'2021-02-09T14:15:00+01:00','timeZone':'Europe/Paris'}
首先,通常
2021-02-09T10:45:00+01:00
并不意味着它持续了一个小时,但时区偏移量为+1小时,这是许多中欧国家(CET)的时区。所以也许你想得到一个不同的表示。您确定
+01:00
代表持续时间吗

如果
+01:00
确实是您的持续时间,那么您可以通过简化字符串比较(如果您去掉
+01:00
)。例如,您可以这样做:

import datetime 

checktime = str(datetime.datetime.now()).replace(' ', 'T')
eventtime = event['start'].get('dateTime', event['start'].get('date')) # Will output 2021-02-09T10:45:00+01:00

starttime = eventtime.split('+')[0]
duration = eventtime.split('+')[1].split(':')
duration = datetime.timedelta(hours=duration[0], minutes=duration[1])
starttime_obj = datetime.datetime.strptime(starttime, '%Y-%m-%dT%H:%M:%S')
endtime = str(starttime_obj + duration)

happened_between = checktime > starttime and checktime < endtime
导入日期时间
checktime=str(datetime.datetime.now()).replace(“”,“T”)
eventtime=event['start'].get('dateTime',event['start'].get('date'))#将输出2021-02-09T10:45:00+01:00
starttime=eventtime.split(“+”)[0]
duration=eventtime.split(“+”)[1]。split(“:”)
持续时间=datetime.timedelta(小时=持续时间[0],分钟=持续时间[1])
starttime_obj=datetime.datetime.strtime(starttime,%Y-%m-%dT%H:%m:%S')
endtime=str(开始时间+持续时间)
在=检查时间>开始时间和检查时间<结束时间之间发生
请注意,这不是最干净的解决方案,更好的方法是使用@DeepSpace指出的datetime对象

更新 在确认它实际上是偏移量后,可以执行以下操作:

import datetime
import pytz

starttime_str = event['start'].get('dateTime', event['start'].get('date')) # Will output 2021-02-09T10:45:00+01:00
endtime_str = event['end'].get('dateTime', event['end'].get('date')) 

checktime = pytz.utc.localize(datetime.datetime.utcnow())
starttime = datetime.datetime.strptime(starttime_str, '%Y-%m-%dT%H:%M:%S%z')
endtime = datetime.datetime.strptime(endtime_str, '%Y-%m-%dT%H:%M:%S%z')

happened_between = checktime > starttime and checktime < endtime
导入日期时间
进口皮茨
starttime_str=event['start'].get('dateTime',event['start'].get('date'))#将输出2021-02-09T10:45:00+01:00
endtime_str=event['end'].get('dateTime',event['end'].get('date'))
checktime=pytz.utc.localize(datetime.datetime.utcnow())
starttime=datetime.datetime.strtime(starttime_str,“%Y-%m-%dT%H:%m:%S%z”)
endtime=datetime.datetime.strtime(endtime_str,“%Y-%m-%dT%H:%m:%S%z”)
在=检查时间>开始时间和检查时间<结束时间之间发生

event_start=(start.split(“T”,1)[1])。split(“+”[0][:-3]。replace(“:”,“,””)
为什么要用字符串开头?您只能使用
datetime
objects@DeepSpace考虑到我有限的知识,我想我可以先用整数比较法来比较它们。我知道这很难看,但这是我一开始发现的最有效的方法,它与事件noc在10到11分钟内工作得很好,一切正常,直到它不工作:)Python date、time和datetime对象使用比较运算符(,=,等等)自然比较。无需分解为单个integers@DeepSpace解决方案是什么?然后你不回答我关于如何获得时区的问题(使用2021-02-09T10:45:00+01:00从事件开始到事件结束)我将添加json,它是我基于的输出。我想你是对的。我刚刚创建了多个具有不同长度的事件,+1代表时区,因此如何获得事件的结束?我不熟悉API,但我假设类似于
事件['end']
?也许你可以检查
事件
对象的键和属性
import datetime
import pytz

starttime_str = event['start'].get('dateTime', event['start'].get('date')) # Will output 2021-02-09T10:45:00+01:00
endtime_str = event['end'].get('dateTime', event['end'].get('date')) 

checktime = pytz.utc.localize(datetime.datetime.utcnow())
starttime = datetime.datetime.strptime(starttime_str, '%Y-%m-%dT%H:%M:%S%z')
endtime = datetime.datetime.strptime(endtime_str, '%Y-%m-%dT%H:%M:%S%z')

happened_between = checktime > starttime and checktime < endtime