【问题标题】:How to check whether a time falls in between two times?如何检查一个时间是否在两次之间?
【发布时间】:2022-01-20 21:14:27
【问题描述】:

我想检查一个时间范围是否在两个区间之间。

例如:

如果给定时间是下午 6:00 和晚上 7:00
并且有几个时间间隔:

timer=['06:00 AM-06:30 AM', '06:30 AM-07:00 AM', '07:00 AM-07:30 AM', '07:30 AM-08:00 AM', '08:00 AM-08:30 AM', '08:30 AM-09:00 AM', '09:00 AM-09:30 AM', '09:30 AM-10:00 AM', '10:00 AM-10:30 AM', '10:30 AM-11:00 AM', '11:00 AM-11:30 AM', '11:30 AM-12:00 PM', '12:00 PM-12:30 PM', '12:30 PM-01:00 PM', '01:00 PM-01:30 PM', '01:30 PM-02:00 PM', '02:00 PM-02:30 PM', '02:30 PM-03:00 PM', '03:00 PM-03:30 PM', '03:30 PM-04:00 PM', '04:00 PM-04:30 PM', '04:30 PM-05:00 PM', '05:00 PM-05:30 PM', '05:30 PM-06:00 PM', '06:00 PM-06:30 PM', '06:30 PM-07:00 PM', '07:00 PM-07:30 PM', '07:30 PM-08:00 PM', '08:00 PM-08:30 PM', '08:30 PM-09:00 PM', '09:00 PM-09:30 PM', '09:30 PM-06:00 AM', '06:00 AM-06:30 AM', '06:30 AM-07:00 AM', '07:00 AM-07:30 AM', '07:30 AM-08:00 AM', '08:00 AM-08:30 AM', '08:30 AM-09:00 AM', '09:00 AM-09:30 AM', '09:30 AM-10:00 AM', '10:00 AM-10:30 AM', '10:30 AM-11:00 AM', '11:00 AM-11:30 AM', '11:30 AM-12:00 PM', '12:00 PM-12:30 PM', '12:30 PM-01:00 PM', '01:00 PM-01:30 PM', '01:30 PM-02:00 PM', '02:00 PM-02:30 PM', '02:30 PM-03:00 PM', '03:00 PM-03:30 PM', '03:30 PM-04:00 PM', '04:00 PM-04:30 PM', '04:30 PM-05:00 PM', '05:00 PM-05:30 PM', '05:30 PM-06:00 PM', '06:00 PM-06:30 PM', '06:30 PM-07:00 PM', '07:00 PM-07:30 PM', '07:30 PM-08:00 PM', '08:00 PM-08:30 PM', '08:30 PM-09:00 PM', '09:00 PM-09:30 PM', '09:30 PM-06:00 AM', '06:00 AM-06:30 AM', '06:30 AM-07:00 AM', '07:00 AM-07:30 AM', '07:30 AM-08:00 AM', '08:00 AM-08:30 AM', '08:30 AM-09:00 AM', '09:00 AM-09:30 AM', '09:30 AM-10:00 AM', '10:00 AM-10:30 AM', '10:30 AM-11:00 AM', '11:00 AM-11:30 AM', '11:30 AM-12:00 PM', '12:00 PM-12:30 PM', '12:30 PM-01:00 PM', '01:00 PM-01:30 PM', '01:30 PM-02:00 PM', '02:00 PM-02:30 PM', '02:30 PM-03:00 PM', '03:00 PM-03:30 PM', '03:30 PM-04:00 PM', '04:00 PM-04:30 PM', '04:30 PM-05:00 PM', '05:00 PM-05:30 PM', '05:30 PM-06:00 PM', '06:00 PM-06:30 PM', '06:30 PM-07:00 PM', '07:00 PM-07:30 PM', '07:30 PM-08:00 PM', '08:00 PM-08:30 PM', '08:30 PM-09:00 PM', '09:00 PM-09:30 PM']

我想在此列表中检查每个元素是否在下午 6:00 - 6:30 和下午 6:30 - 7:00

我已经这样做了:

start_hours=6:00 PM
end_hours=7:00 PM

for li in timer:
    time1=li[:8]
    time2=li[9:18]
    # print("time1",time1)
    # print("start_hours",start_hours)
    if time1>=start_hours  and start_hours<=time2 and time2<=end_hours and end_hours>=time1:
        if not any(d['time'] == li for d in info):
            info.append({
                'time':li,
                
            })

timer 与我上面给出的timer 列表相同,但我没有得到我想要的结果。

【问题讨论】:

  • 如果您在自己解决此问题时遇到特定问题,可以在此处使用您的代码询问。
  • 添加到问题中

标签: python time


【解决方案1】:
import datetime

check_time = "06:00 PM"

timer = your_list_of_time_ranges


def str2time(time_str):
    return datetime.datetime.strptime(time_str, "%H:%M %p")


for time_range in timer:
    start, end = map(str2time, time_range.split("-"))
    if start <= str2time(check_time) <= end:
        print("{check_time} falls in {time_range}".format(check_time=check_time, time_range=time_range))

【讨论】:

  • 在上午 6:00 给出时不正确 ..它就像 06:00 AM 落在 06:00 AM-06:30 AM 06:00 AM 落在 05:30 PM-06:00 PM 06:00 AM 落在 06:00 PM-06:30 PM 06:00 AM 落在 06:00 AM-06:30 AM 06:00 AM 落在 05:30 PM-06:00 PM 06:00 AM落在 06:00 PM-06:30 PM 06:00 AM 落在 06:00 AM-06:30 AM 06:00 AM 落在 05:30 PM-06:00 PM 06:00 AM 落在 06:00 PM-06:30 PM
  • 抱歉,请使用 %I,而不是 strptime 格式的 %H:docs.python.org/3/library/…
  • 它显示 07:00 AM-07:30 AM...根据我的 qstn 不需要这么多
猜你喜欢
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多