@truesadboy

Ошибка PHP(7.2): Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given?

Привет всем! Стоит задача спарсить сайт. В одном из элементов находится дата и обработать ее. Исходный формат даты: j-m-y . Перевожу в Y-m-d и выдается ошибка Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given.
foreach($matches as $value){
    $value = pq($value);
    $date = $value->find('h4')->text();
    $fdate = preg_replace("/[.]/", "-", $date);
    $create_date = date_create_from_format('j-m-y', $fdate);
    $formate_date = date_format($create_date, 'Y-m-d');
    $end_date = strtotime($formate_date);
    var_dump($date);
}


ошибка исходит из переменной $date. var_dump показал следующее
string(8) "06.09.18"
Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given in C:\OSPanel\domains\pq\new.php on line 76
string(0) "" string(8) "10.09.18"
Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given in C:\OSPanel\domains\pq\new.php on line 76
string(0) "" string(8) "12.09.18"

Откуда берется string(0) "" после первого "прогона" в цикле?
  • Вопрос задан
  • 1642 просмотра
Пригласить эксперта
Ответы на вопрос 2
Decadal
@Decadal
date_create_from_format

Возвращает созданный экземпляр класса DateTime или FALSE в случае возникновения ошибки.
во-первых, этот момент надо учесть

$date = $value->find('h4')->text();
во вторых оно читает все заголовки h4. Вас удивляет что в чужой верстке есть пустые h4? просто учтите их и игнорируйте.
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given

Что именно неясно в ошибке сказано? Параметр должен быть чем-то похожим на DateTimeInterface, а вы bool пихаете.
Откуда bool - потому что date_create_from_format его имеет право вернуть. В частности, если формат строки не соответствует требуемому.

Ну и не имеет смысла дёргать форматирование в строку и повторно strtotime, когда уже есть родной метод getTimestamp.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы