【发布时间】:2021-07-06 00:51:30
【问题描述】:
我有一个六小时时段列表['00:00','06:00','12:00','18:00']。如果当前时间低于以下时间,我需要构建一个返回时隙之一的函数:
From 00:00 - to 05:59 -> # should return -> 00:00
From 06:00 - to 11:59 -> # should return -> 06:00
From 12:00 - to 17:59 -> # should return -> 12:00
From 18:00 - to 23:59 -> # should return -> 18:00
我请求了一个类似的函数,它返回到当前时间的最近和最远时间:https://stackoverflow.com/a/68240328/14712981。我对当前的问题使用了来自@RJ Adriaansen 的相同代码,但它没有按预期工作。
代码如下:
current_time = '10:00'
time = ['00:00','06:00','12:00','18:00']
def get_time(time):
return datetime.strptime(time, '%H:%M')
current_time = get_time(current_time)
time = [get_time(i) for i in time]
print(min(time,key=lambda x : abs(current_time-x)).strftime('%H:%M'))
# It returns 12:00, while it should return 06:00 in my case.
谁能告诉我我需要做什么才能解决问题?
【问题讨论】:
-
你为什么使用
abs()?它将返回开始时间最接近x而不是早于它的时间段。