Я создал функцию, которая возвращает true, если разница между текущей датой и другой датой, если она меньше x дней.PHP DateTime diff format возвращает -0
Вот моя функция:
private function notBeforeDate($date_to_compare, $interval) {
$now = new DateTime('now');
$date = new DateTime($date_to_compare);
$diff = $now->diff($date)->format("%r%a");
return $diff < $interval ? true : false;
}
Но когда я посылаю ту же дату $diff
воли возвращает 0 и день +1 воли возвращает 0.
Например (если предположить, что текущая дата 2017- 02-16):
$this->notBeforeDate('2017-02-15', 1); // $diff = -1
$this->notBeforeDate('2017-02-16', 1); // $diff = -0
$this->notBeforeDate('2017-02-17', 1); // $diff = 0
$this->notBeforeDate('2017-02-18', 1); // $diff = 1
Как я могу сделать, чтобы получить хорошее значение в моем $diff
переменных? Я хочу это:
$this->notBeforeDate('2017-02-15', 1); // $diff = -1
$this->notBeforeDate('2017-02-16', 1); // $diff = 0
$this->notBeforeDate('2017-02-17', 1); // $diff = 1
$this->notBeforeDate('2017-02-18', 1); // $diff = 2
работает нормально с некоторыми изменениями: - https://eval.in/738465 (только пример) –
2017-02-17 и 2017-02-16 вернет 0 и то, и другое. Я хочу '1', если полученная дата - это день +1 – John
Не вдаваясь в это:' DateTime' звучит так, как будто это возвращает время. «сейчас» прямо здесь для меня 2017-02-16 13:48 ведьма меньше одного дня с 2017-02-16 00:00:00 и 2017-02-17 00:00:00. Я бы посоветовал вместо этого «плакать» вместо «Дата», если бы его дни искали. –