Codeigniter获取两个日期的差额

时间:2018-08-21 10:41:50

标签: php database codeigniter date model

我需要获取两个日期的差额,并更新数据库中日期的差额。

模型

public function approve($id, $leave_type, $leave_start, $leave_end) 
{   
    $diffDays= abs($leave_end - $leave_start);  
    $this->db->set('leave_days', $diffDays);
    $this->db->set('status', Approved);
    $this->db->where('id', $id);
    $this->db->update('leave');

    return $this->db->affected_rows() > 0;  
}

abs($ leave_end-$ leave_start);不管用。但是,当将硬编码值设置为diffDays时,它可以正常工作。

3 个答案:

答案 0 :(得分:1)

Please try this for getting a difference between two dates.


    $date1=date_create($leave_start);
    $date2=date_create($leave_end);
    $diff=date_diff($date1,$date2);
    $days=$diff->format("%a");



    $id = 1;
    $this->db->set('leave_days', $days);

    $this->db->where('id', $id);
    $this->db->update('leave');

答案 1 :(得分:1)

将日期格式调整为您使用的格式。

    $leave_start = DateTime::createFromFormat('Y-m-d', $leave_start);
    $leave_end = DateTime::createFromFormat('Y-m-d', $leave_end);
    $diffDays = $leave_end->diff($leave_start)->format("%a");

    $this->db->where('id', $id);
    $this->db->update('leave', array('leave_days' => $diffDays));

答案 2 :(得分:0)

$ leave_start = '01 -01-2018'; $ leave_end = '10 -01-2018';

$id = 1;
$diffDays = abs($leave_end - $leave_start);     
$this->db->set('leave_days', $diffDays);

$this->db->where('id', $id);
$this->db->update('leave');

请确保您的$ diffDays有价值,因为它对我有用。