php – 识别日期和时间阵列的冲突

我已经检查了其他SO问题,但似乎无法找到与此相关的任何内容 – 如果我错过了某些内容,请指出正确的方向.

我目前有以下数组包含日期和时间(请求的会议时间):

Array (
    [0] =>
        day => 'Thursday',
        start_time => '14:00',
        end_time => '15:00'
    [1] =>
        day => 'Thursday',
        start_time => '16:30',
        end_time => '17:30'
)

用户需要参加这两次.我试图做的是与包含用户当前约会的另一个数组进行比较,并检测是否存在冲突/时间重叠问题

Array (
    [0] =>
        day => 'Monday',
        start_time => '09:00',
        end_time => '13:00'
    [1] =>
        day => 'Wednesday',
        start_time => '10:45',
        end_time => '11:15'
    [2] =>
        day => 'Thursday',
        start_time => '16:45',
        end_time => '17:45'
)

使用上面的例子,我想确定第二个时隙[1] =>存在冲突.与第三个时段冲突的第一个阵列(拟议会议)[2] =>第二个阵列(当前会议)

我见过带有时间戳和完整日期的示例,但不仅仅是天和开始/结束时间.

解决方法:

如果它们都在数据库中,则冲突查询可能如下所示:

SELECT `plan`.*
FROM `plan`
    JOIN `current` ON `plan`.`day`=`current`.`day`
WHERE
    `plan`.`start_time` < `current`.`end_time`
    AND `plan`.`end_time` > `current`.`start_time`

其中current是具有当前计划的表,而计划是具有用户计划的表.我没有测试这个只是因为我没有一个例子,但是这应该返回日期相同且计划时间与当前时间重叠的行.

编辑:如果不需要,你可能还想做像标记当前为暂定的东西.你可以把它放到查询where子句中.

还是>和<意味着开始和结束分钟不包括在内.所以如果一个人在另一个人开始的同时结束,这不会将他们标记为冲突.如果您希望开始/结束分钟包含在内,请将它们更改为> =和< =.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...