Класс DateTime, как обращаться с отрицательным интервалом дат
У меня есть простая функция, которая возвращает количество дней между двумя датами, используя функцию сравнения DateTime. Но сейчас он по-прежнему возвращает положительное число, если дата окончания предшествует дате начала. Есть ли способ вернуть отрицательную разницу, используя этот метод? Или я бы поспорил лучше просто проверить с strtotime в моей функции? В идеале я думаю, что я просто верну 0 из его отрицательной разницы.
//Returns the total number of days between two dates
function count_days($start_date, $end_date){
$d1 = new DateTime($start_date);
$d2 = new DateTime($end_date);
$difference = $d1->diff($d2);
return $difference->days;
}
2 ответа
Решение
Использовать r
флаг, чтобы получить отрицательный знак там:
function count_days($start_date, $end_date){
$d1 = new DateTime($start_date);
$d2 = new DateTime($end_date);
$difference = $d1->diff($d2);
return $difference->format('%r%a days');
}
Проверьте разницу в $ -> инвертировать
function count_days($start_date, $end_date){
$d1 = new DateTime($start_date);
$d2 = new DateTime($end_date);
$difference = $d1->diff($d2);
if ($difference->invert == 1) { //if 1 then difference will in minus other wise inplus
return -$difference->d;
} else {
return $difference->d;
}
}