У меня есть небольшая функция, которая показывает последние действия, она берет временную метку в формате unix из базы данных, а затем выводит эхо этой строкой :
date("G:i:s j M -Y", $last_access)
Теперь я хотел бы заменить дату (j M -Y) на «Вчера» и «Сегодня», если последняя активность была в пределах сегодняшнего дня, и то же самое происходит с «Вчера».
Как я могу это сделать?
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);
Если вы идете по пути, предложенному выше, с временными метками unix для сегодня / вчера, взгляните на strtotime
, одно из величайших изобретений 20-го (или 21-го?) века:
echo strtotime("yesterday"); // midnight
1281391200
echo strtotime("today"); // midnight
1281477600
echo strtotime("today, 1:30");
1281483000
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";
}
Я бы нашел расписание за последнюю полночь и предыдущее, если $last_access
находится между двумя временными метками, то отображение вчера, что-нибудь большее, чем метка времени прошлой полуночи, будет сегодня...
Я считаю, что это было бы быстрее, чем делать арифметику даты.
На самом деле, я только что протестировал этот код, и он, кажется, отлично работает:
<?php
if ($last_access >= strtotime("today"))
echo "Today";
else if ($last_access >= strtotime("yesterday"))
echo "Yesterday";
?>