Последнее посещение в PHP: методы и примеры кода

В 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, вы можете улучшить взаимодействие с пользователем и сделать функцию «последний просмотр» вашего приложения более интуитивно понятной.

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