В PHP отображение времени «последнего посещения» в удобном для пользователя формате, таком как «X минут назад» или «Y дней назад», является общим требованием для различных веб-приложений. В этой статье мы рассмотрим несколько методов достижения этой функциональности, а также примеры кода, которые помогут вам реализовать ее в ваших проектах PHP.
Метод 1: использование классов DateTime и DateInterval
function getLastSeenTime($lastSeenTimestamp) {
$currentTime = new DateTime();
$lastSeenTime = DateTime::createFromFormat('Y-m-d H:i:s', $lastSeenTimestamp);
$diff = $currentTime->diff($lastSeenTime);
if ($diff->y > 0) {
return $diff->y . " years ago";
} elseif ($diff->m > 0) {
return $diff->m . " months ago";
} elseif ($diff->d > 0) {
return $diff->d . " days ago";
} elseif ($diff->h > 0) {
return $diff->h . " hours ago";
} elseif ($diff->i > 0) {
return $diff->i . " minutes ago";
} else {
return "Just now";
}
}
// Usage example
$lastSeenTimestamp = "2024-03-10 15:30:00";
echo getLastSeenTime($lastSeenTimestamp); // Output: "1 day ago"
Метод 2. Использование функций strtotime и time
function getLastSeenTime($lastSeenTimestamp) {
$currentTime = time();
$lastSeenTime = strtotime($lastSeenTimestamp);
$diffInSeconds = $currentTime - $lastSeenTime;
if ($diffInSeconds < 60) {
return "Just now";
} elseif ($diffInSeconds < 3600) {
$diffInMinutes = floor($diffInSeconds / 60);
return $diffInMinutes . " minutes ago";
} elseif ($diffInSeconds < 86400) {
$diffInHours = floor($diffInSeconds / 3600);
return $diffInHours . " hours ago";
} else {
$diffInDays = floor($diffInSeconds / 86400);
return $diffInDays . " days ago";
}
}
// Usage example
$lastSeenTimestamp = "2024-03-10 15:30:00";
echo getLastSeenTime($lastSeenTimestamp); // Output: "1 day ago"
Метод 3. Использование библиотеки Carbon (требуется установка через Composer)
use Carbon\Carbon;
function getLastSeenTime($lastSeenTimestamp) {
$currentTime = Carbon::now();
$lastSeenTime = Carbon::parse($lastSeenTimestamp);
return $lastSeenTime->diffForHumans($currentTime);
}
// Usage example
$lastSeenTimestamp = "2024-03-10 15:30:00";
echo getLastSeenTime($lastSeenTimestamp); // Output: "1 day ago"
В этой статье мы рассмотрели три различных метода отображения времени «последнего посещения» в PHP. Мы рассмотрели примеры кода с использованием классов DateTime и DateInterval, функций strtotime и time, а также библиотеки Carbon. Эти методы обеспечивают гибкость и удобство форматирования временных интервалов на основе текущего времени. Внедряя эти методы в свои проекты PHP, вы можете улучшить взаимодействие с пользователем и сделать функцию «последний просмотр» вашего приложения более интуитивно понятной.
Не забудьте настроить фрагменты кода в соответствии с вашими конкретными требованиями и интегрировать их в свой проект, чтобы точно отображать время последнего посещения.