在python中将当前时间缩放到一个范围

在python中将当前时间缩放到一个范围,python,datetime,scaling,Python,Datetime,Scaling,我想在一个范围内缩放当前时间。我的开始时间是08:00,结束时间是19:00,这是一个11小时的周期。开始时间的缩放值应为0,结束时间的缩放值应为11。像10:00和10:30这样的时间应该分别缩放为1和1.5。我的代码 from datetime import datetime now = datetime.now() current_time = now.strftime("%H:%M") start_time = '08:00' end_time = '19:00' 上面的代码将变

我想在一个范围内缩放当前时间。我的开始时间是08:00,结束时间是19:00,这是一个11小时的周期。开始时间的缩放值应为0,结束时间的缩放值应为11。像10:00和10:30这样的时间应该分别缩放为1和1.5。我的代码

from datetime import datetime

now = datetime.now()

current_time = now.strftime("%H:%M")

start_time = '08:00'
end_time = '19:00'
上面的代码将变量读取为字符串,我无法对它们执行计算。有人能帮我实现缩放吗

谢谢

now.strftime(“%H:%M”)
更改为
now.strftime(“%H%M”)


通过这种方式,您可以将其转换为整数,因此您可以使用1000而不是10:00,您可以使用加减法您可以使用
datetime.hour
datetime.minute
从时间中提取小时和分钟

要获得所需的缩放值,对于指定的范围(08:00到19:00),可以使用:

从日期时间导入日期时间
now=datetime.now()

如果(8您可以将两个datetime对象相减得到的timedelta对象相除

>>> from datetime import datetime
>>> start = datetime(2019, 12, day=19, hour=8, minute=0)
>>> end = datetime(2019, 12, day=19, hour=19, minute=0)
>>> now = datetime.now()
>>> print((now - start) / (end - start))
0.7824158481565656

8到19正好是11小时,所以你们不需要缩放它,只要用当前时间减到8点就可以了。所以问题是把字符串改成十进制的小时

from datetime import datetime

now = datetime.now()

current_time = now.strftime("%H:%M")

start_time = '08:00'
end_time = '19:00'

def conv(s):
    l = s.split(':')
    h = int(l[0])
    m = int(l[1])
    return h+m/60

st = conv(start_time)
# et = conv(end_time)
n = conv(current_time)

scaled = n-st
print(scaled)