PHP: date «Вчера», «Сегодня»

У меня есть небольшая функция, которая показывает последние действия, она берет временную метку в формате unix из базы данных, а затем выводит эхо этой строкой :

 date("G:i:s j M -Y", $last_access)

Теперь я хотел бы заменить дату (j M -Y) на «Вчера» и «Сегодня», если последняя активность была в пределах сегодняшнего дня, и то же самое происходит с «Вчера».

Как я могу это сделать?

13
задан hakre 16 June 2012 в 11:10
поделиться

4 ответа

function get_day_name($timestamp) {

    $date = date('d/m/Y', $timestamp);

    if($date == date('d/m/Y')) {
      $date = 'Today';
    } 
    else if($date == date('d/m/Y',now() - (24 * 60 * 60))) {
      $date = 'Yesterday';
    }
    return $date;
}
print date('G:i:s', $last_access).' '.get_day_name($last_access);
15
ответ дан 1 December 2019 в 17:17
поделиться

Если вы идете по пути, предложенному выше, с временными метками unix для сегодня / вчера, взгляните на strtotime, одно из величайших изобретений 20-го (или 21-го?) века:

echo strtotime("yesterday"); // midnight
1281391200

echo strtotime("today"); // midnight
1281477600

echo strtotime("today, 1:30");
1281483000
2
ответ дан 1 December 2019 в 17:17
поделиться
something like:

$now = time();

$last_midnight = $now - ($now % (24*60*60));

if ($last_access >= $last_midnight)
{
 print "Today";
}    
elseif ($last_access >= ($last_midnight-(24*60*60))
{
 Print "Yesterday";
}
1
ответ дан 1 December 2019 в 17:17
поделиться

Я бы нашел расписание за последнюю полночь и предыдущее, если $last_access находится между двумя временными метками, то отображение вчера, что-нибудь большее, чем метка времени прошлой полуночи, будет сегодня...

Я считаю, что это было бы быстрее, чем делать арифметику даты.

На самом деле, я только что протестировал этот код, и он, кажется, отлично работает:

<?php
    if ($last_access >= strtotime("today"))
        echo "Today";
    else if ($last_access >= strtotime("yesterday"))
        echo "Yesterday";
?>
38
ответ дан 1 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: