Как правильно вывести дату и время как это делают в соц-сетях RedBean PHP

вывожу данные через R::findAl. В данном случае вывожу дату, но не знаю как написать условия что бы к примеру если сегодня 24.06.2022 то показывало вместо этой даты, слово - Сегодня в ... Как это реализовать? Вот сам код:

    $posts_all = R::findAll('posts', 'ORDER BY -id');
                        
    foreach ($posts_all as $posts){
    echo '<span class="post-date">'.date('d.m.Y'.' в '.'H:i',strtotime($posts->post_time)).'</span>';
    }

А хочу примерно так: (Но так нельзя)))

$posts_all = R::findAll('posts', 'ORDER BY -id');
                        
foreach ($posts_all as $posts){
    echo '<span class="post-date">'.

    $date = date("Y.m.d H:i:s")
    if ($date == date('d.m.Y')){
     'Cегодня в ' .date('H:i');
    }

    else if ($date == date('d.m.Y', strtotime('-1 day'))){
     'Вчера в ' .date('H:i');
    }';
}

Ответы (1 шт):

Автор решения: splash58

Можно так:

foreach ($posts_all as $posts){
    echo '<span class="post-date">';

    if (date("Y.m.d") == date('Y.m.d', strtotime($posts->post_time))){
     'Cегодня в ' .date('H:i', strtotime($posts->post_time));
    }
    elseif (date("Y.m.d", strtotime('-1 day')) == date('Y.m.d', strtotime($posts->post_time))){
     'Вчера в ' .date('H:i', strtotime($posts->post_time));
    }
}

Если у вас $posts->post_time в формате Y-m-d H:i:s то можно так

if (date("Y-m-d") == substr($posts->post_time, 0, 8))

Но часто, как на stackoverflow, смотрят разницу в секундах между сейчас и временем поста

time() - strtotime($posts->post_time)

и пишут в секундах до 60 секунд, в минутах до часа....

→ Ссылка