如何在CodeIgniter中使用日期助手来查找时间冲突?

时间:2016-03-26 22:57:15

标签: codeigniter codeigniter-3

我有一个数据库表

TABLE subject_loads
id (int)
subject_name (varchar)
time_start (time)
time_end (time)
time_diff (decimal)

当我将其保存在数据库中时,它将首先检查时间是否与已经输入的其他时间不冲突。如果没关系,那么计算time_start和time_end给我两者之间的差异。

示例,7:30 AM - 8:30 AM已经在数据库中,当我输入8:00 AM - 9:00 AM时,它会说“与其他时间冲突”。只有我可以在7:30 AM之前或8:30 AM之后输入与7:30 AM - 8:30 AM不重叠的内容。

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

首先,您需要检查重叠值(与新值相比)是否已存在。你会这样做:

$query = $this->db->get_where('subject_loads', array('time_start >= ' => $time_start, 'time_end <= ' => $time_end));

if((int)$query->num_rows() > 0)
{
    //similar values exist
}
else
{
    //you are free to insert values
}

问题的第二部分:

$hm1 = "2:12 AM";
$hm2 = "4:41 PM";

$e = conv($hm2) - conv($hm1);

echo $e;

function conv($time)
{
    $expl_time = explode(' ', $time);

    $t = explode(":", $expl_time[0]);

    if ($expl_time[1] == 'PM' || $expl_time[1] == 'pm')
    {
        $t[0] += 12;
    }

    return ($t[0] + round($t[1]/60, 1, PHP_ROUND_HALF_UP));
}