在python中将当前时间缩放到一个范围
我想在一个范围内缩放当前时间。我的开始时间是08:00,结束时间是19:00,这是一个11小时的周期。开始时间的缩放值应为0,结束时间的缩放值应为11。像10:00和10:30这样的时间应该分别缩放为1和1.5。我的代码在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' 上面的代码将变
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)