python 确定时间段在哪几个时间区间内

设:
0:00-9:00 为区间0
9:00-17:00为区间1
17:00-22:00为区间2
22:00-24:00为区间3

比如:
给一个时间段为18:12-8:34
求得这个时间段按顺序写在[2,3,0]
给一个时间段为14:44-23:11
求得这个时间段按顺序写在[1,2,3]
给一个时间段为18:33-21:59
求得这个时间段按顺序写在[2]

给任何一个时间段都能给出这个列表要怎么编写啊

ret_list = []
start = input('开始时间:')
end = input('结束时间:')
start_hour = int(start.split(':')[0])
end_hour = int(end.split(':')[0])
if 0 < start_hour < 9:
    ret_list.append(0)
elif 9 < start_hour < 17:
    ret_list.append(1)
elif 17 < start_hour < 22:
    ret_list.append(2)
else:
    ret_list.append(3)


if 0 < end_hour < 9:
    ret_list.append(0)
elif 9 < end_hour < 17:
    ret_list.append(1)
elif 17 < end_hour < 22:
    ret_list.append(2)
else:
    ret_list.append(3)

if ret_list[1] > ret_list[0]:
    ret = [num for num in range(ret_list[0], ret_list[1]+1)]
else:
    ret_list[1] = ret_list[1] + 4
    ret = [num if num <= 3 else num - 4 for num in range(ret_list[0], ret_list[1]+1)]
print(ret)

1.先把字符串拆开,分别得到开始小时,开始分钟,结束小时,结束分钟
2.判断开始时间到底在哪个段,结束时间到底在哪个段
3.补齐开始和结束之间的段,如果开始和结束在一个段里,并且开始大于结束,也补齐,否则不补齐

一个简单实现,供参考:

def inOneZone(firstTime,secondHour):
    
    if firstTime>=0 and firstTime<9  and secondHour>=0 and secondHour<9:
        #print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
        return 1
    elif firstTime>=9 and firstTime<17  and secondHour>=9 and secondHour<17:
        #print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
        return 1
    elif firstTime>=17 and firstTime<22  and secondHour>=17 and secondHour<22:
        #print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
        return 1
    elif firstTime>=22 and firstTime<24  and secondHour>=22 and secondHour<24:
        #print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
        return 1
    else:
        #print("inOneZone,return 0,firstHour=",firstHour,"secondHour=",secondHour)
        return 0
    

times = input("请输入一个时间段:")
tlist = times.split("-")

firstTime = tlist[0].split(":")
firstHour = int(firstTime[0])
firstMinute = int(firstTime[1])
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])

secondTime = tlist[1].split(":")
secondHour = int(secondTime[0])
secondMinute = int(secondTime[1])
#print("secondHour=",secondHour,"secondMinute=",secondMinute,"tlist[1]=",tlist[1])

result = []

while True:

    
    #print("in while")
    if firstHour >= 0 and (firstHour <9 and firstMinute<=59) :
        if inOneZone(firstHour, secondHour) ==1 :
            result.append(0)
            break
        #print(0)
        result.append(0)
        firstHour=9
        firstMinute=0
        
        #print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
        
            
    elif firstHour >= 9 and (firstHour <17 and firstMinute<=59) :
        if inOneZone(firstHour, secondHour) ==1 :
            result.append(1)
            break
        #print(1)
        result.append(1)
        firstHour=17
        firstMinute=0
        
        #print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
        
            
    elif firstHour >= 17 and (firstHour <22 and firstMinute<=59):
        if inOneZone(firstHour, secondHour) ==1 :
            result.append(2)
            break
        #print(2)
        result.append(2)
        firstHour=22
        firstMinute=0
        
        #print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
        
            
    elif firstHour >= 22 and (firstHour <24 and firstMinute<=59):
        if inOneZone(firstHour, secondHour) ==1 :
            result.append(3)
            break
        #print(3)
        result.append(3)
        
        firstHour=0
        firstMinute=0
        #print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
        

        
    
    

print(result)


img

这篇文章:Python基础—判断时间是否在时间区间内 也许有你想要的答案,你可以看看