【问题标题】:Time slot availablity in pythonpython中的时隙可用性
【发布时间】:2012-08-11 11:45:00
【问题描述】:

我正在用 python 为我的应用程序编写一个插槽预订算法 像这样

from datetime import datetime, timedelta

appointments = [(datetime(2012, 5, 22, 10), datetime(2012, 5, 22, 10, 30)),
                (datetime(2012, 5, 22, 12), datetime(2012, 5, 22, 13)),
                (datetime(2012, 5, 22, 15, 30), datetime(2012, 5, 22, 17, 10))]

hours = (datetime(2012, 5, 22, 9), datetime(2012, 5, 22, 18))

def get_slots(hours, appointments, duration=timedelta(hours=1)):
    slots = sorted([(hours[0], hours[0])] + appointments + [(hours[1], hours[1])])
    for start, end in ((slots[i][1], slots[i+1][0]) for i in range(len(slots)-1)):
        assert start <= end, "Cannot attend all appointments"
        while start + duration <= end:
            print "{:%H:%M} - {:%H:%M}".format(start, start + duration)
            start += duration

如果我在 9 小时到 18 小时内检查特定日期的时段,这对我来说很好 但这并没有满足我对每周或每月可用性的要求。因为我想在 9 小时到 18 小时之间检查每周或每月的可用性。

请帮助我改进我的代码,以便它可以检查数周和数月的 9 小时到 18 小时之间的可用时段。

【问题讨论】:

    标签: python


    【解决方案1】:

    我认为您打算hours适用于一周或月份的每一天(除了休息几天之外),所以您可能会更改为987654322 @对象。然后每天,您可以在前一天的结束之前创建一个间隔,直到这一天开始。不要忘记创建一个在最后一天结束时开始的间隔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多