Мне нужно получить разницу двух дат и обновить разницу дат в базе данных.

модель

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 ($ exit_end - $ exit_start); не работает. Но когда для жестко заданного значения установлено значение diffDays, оно работает нормально.

0
shavindip 21 Авг 2018 в 13:41

3 ответа

Лучший ответ

Отрегулируйте формат даты в соответствии с форматом, который вы используете.

    $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));
1
Tom Vaughan 21 Авг 2018 в 17:55
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
shubham chhapre 22 Авг 2018 в 05:11

$ exit_start = '01 -01-2018 '; $ exit_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 имеет какое-то значение, потому что он работал для меня.

0
aditya 21 Авг 2018 в 11:08
51946886