PHP日历:下一个可用的时段

时间:2016-04-06 14:10:12

标签: php mysql datetime calendar

上下文

我正在构建一个主要基于日历的日程安排功能的webapp。我选择fullcalendar.io来显示事件,因此创建了一个相当简单的mysql结构:

id (autoincrement)
patient_id (the users id)
start (datetime, e.g. 2016-04-06 14:30:00)
end (datetime)

现在我要解决的挑战是找到某一天的可用时间段...... 话虽如此,还有一些变量使它更复杂:

  • session_length(int)是以分钟为单位的持续时间,由用户的设置
  • 给出
  • session_interval(int)是两个会话之间的间隔。

因此,如果session_length = 45 & session_interval = 15,我们正在寻找75分钟的时间段。 如果时间段是75的倍数,我们需要将其添加到$available_timeslots array()

我尝试了什么:

当然,将当天安排的事件放入名为events的数组中:

Array
(
    [0] = Array
        (
            [title] = Client 24
            [start] = 2016-04-06 21:15:00
            [end] = 2016-04-06 22:30:00
        )

    [1] = Array
        (
            [title] = client 1
            [start] = 2016-04-06 16:40:00
            [end] = 2016-04-06 17:55:00
        )

)

基于更有创意而不是有效代码的各种循环,例如通过1440分钟(= 1天)的循环测试哪些循环与事件重叠。这看起来非常沉重,但是到目前为止我是最好的解决方案。

我想如何使用可用的广告位:

我们的想法是使用以下html模板将模型显示在具有10(或20)个下一个可用日期列表的模式中:

<ul class="available_dates">
    <li class="date" data-start="_TIMESLOT_STARTDATE_" data-end="_TIMESLOT_ENDDATE">Monday - 06/04/2016 09:30</li>
    <li class="date" data-start="_TIMESLOT_STARTDATE_" data-end="_TIMESLOT_ENDDATE">Monday - 06/04/2016 10:45</li>
</ul>

欢迎提出任何建议,我尝试了数以千计的事情,但找不到可靠而轻量级的解决方案。

谢谢大家的帮助!

0 个答案:

没有答案