Итак, PHP, похоже, сегодня идиот.Или, может быть, это я.Или и то, и другое.
function before($test,$bar) {
$test = date_create($test);
$bar = date_create($bar);
$diff = date_diff($bar,$test);
$diff = $diff->format('%r%a') * 1;
return $diff<0;
}
Он отказывается признать, что дата, сгенерированная следующими средствами:
date('m-d-Y', strtotime($date));
... - это не что иное, как БУЛЕ.Если я выведу результат, он выйдет в виде строки, но - с PHP, которая меня смущает - before()
воспринимает его как нечто, чем оно не является.Здесь НИЧЕГО не должно быть преобразовано в логическое значение.Я могу напрямую подать ему строку, и она отлично работает.Дайте ему дату из фрагмента кода, специально созданного для этой цели, ну, у нас не может быть этого, потому что ...
Warning: date_diff() expects parameter ... to be DateTime, boolean given
Я подумал: "Хорошо, я дам вам вашжелание парсера. "
function before($test,$bar) {
$test = new DateTime(date('Y-m-d',strtotime($test)));
$bar = new DateTime(date('Y-m-d',strtotime($bar)));
$diff = $bar->diff($test);
$diff = $diff->format('%r%a') * 1;
return $diff<0;
}
Никаких изменений в результате.Я дал ему то, что он хотел, или, по крайней мере, то, что он сказал он хотел (я думаю), и он все еще отвергает меня.Кодирование имитирует реальность.
Мне пока не очень комфортно с датами.Я также не очень доволен тем, как PHP обрабатывает время года.Любой совет?А может быть, как заставить это работать тоже?
Редактировать
Запуск var_dump($test)
object(DateTime)#7 (3) {
["date"]=>
string(19) "1970-01-01 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}