Функция сравнения дат в php не работает

Я построил эту функцию, которая должна сравнивать даты и возвращать логическое значение.
Когда я запускаю его, он ломается, страница останавливается.

функция:

 public function compare_date_outlook($creation, $modification) {
$creation_date =  DateTime::createFromFormat('Y-m-d\TH:i:s+', $creation);
$creation_date = $creation_date->format( 'Y-m-d');
$modification_date =  DateTime::createFromFormat('Y-m-d\TH:i:s+', $modification);
$modification_date = $modification_date->format( 'Y-m-d');
$date = new \DateTime( 'yesterday' );
$date->setTime( 0, 0, 0 );
$yesterday = $date->format( 'Y-m-d');

if (($creation || $modification) == $yesterday)
{
return TRUE;
}

else {
return FALSE;
}
}

Как я это называю:

if ( compare_date_outlook($a['creationDate'], $a['lastModifiedDate']) === TRUE)

Формат даты:

 $a['creationDate'] = "2017-09-08T13:26:11.4354775Z";

Это останавливается прямо в начале:

$creation_date =  DateTime::createFromFormat('Y-m-d\TH:i:s+', $creation);

0

Решение

Возможно, у вас есть другое пространство имен. Так что вам нужно добавить \ перед глобальными методами / классами, когда вы находитесь в другом пространстве имен

смотри документ здесь http://www.php.net/manual/en/language.namespaces.global.php

public function compare_date_outlook($creation, $modification) {
$creation_date =  \DateTime::createFromFormat('Y-m-d\TH:i:s+', $creation);
$creation_date = $creation_date->format( 'Y-m-d');
$modification_date =  \DateTime::createFromFormat('Y-m-d\TH:i:s+', $modification);
1

Другие решения

Примерно так должно работать:

function compare_date_outlook($creation, $modification)
{
$today = (new \Datetime())->setTime(0, 0, 0);
$yesterday = (new \Datetime('yesterday'))->setTime(0, 0, 0);

$creation_date = \DateTime::createFromFormat('Y-m-d\TH:i:s+', $creation);
$modification_date = \DateTime::createFromFormat('Y-m-d\TH:i:s+', $modification);

return ($creation_date >= $yesterday && $creation_date < $today) ||
($modification_date >= $yesterday && $modification_date < $today);
}

Надеюсь это поможет!

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector