Maison >développement back-end >tutoriel php >Comment convertir des horodatages en dates et heures relatives lisibles par l'homme en PHP ?

Comment convertir des horodatages en dates et heures relatives lisibles par l'homme en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 11:06:20692parcourir

How to Convert Timestamps to Human-Readable Relative Dates and Times in PHP?

Conversion des horodatages en date/heure relative

En PHP, vous pouvez facilement convertir les horodatages en chaînes de date/heure relatives conviviales qui fonctionnent à la fois pour les horodatages passés et futurs . En adaptant les horodatages à ce format, vous pouvez améliorer l'expérience utilisateur en fournissant des représentations temporelles intuitives.

Pour réaliser cette conversion, vous pouvez utiliser la fonction suivante :

function time2str($ts)
{
    // Handle non-numeric timestamps
    if (!ctype_digit($ts)) {
        $ts = strtotime($ts);
    }

    $diff = time() - $ts;

    // Handle current time
    if ($diff == 0) {
        return 'now';
    }

    // Handle past timestamps
    if ($diff > 0) {
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            // Handle minutes and hours ago
            if ($diff < 60) {
                return 'just now';
            } elseif ($diff < 120) {
                return '1 minute ago';
            } elseif ($diff < 3600) {
                return floor($diff / 60) . ' minutes ago';
            } elseif ($diff < 7200) {
                return '1 hour ago';
            } elseif ($diff < 86400) {
                return floor($diff / 3600) . ' hours ago';
            }
        } elseif ($day_diff == 1) {
            return 'Yesterday';
        } elseif ($day_diff < 7) {
            return $day_diff . ' days ago';
        } elseif ($day_diff < 31) {
            return ceil($day_diff / 7) . ' weeks ago';
        } elseif ($day_diff < 60) {
            return 'last month';
        } else {
            return date('F Y', $ts);
        }
    }

    // Handle future timestamps
    else {
        $diff = abs($diff);
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            // Handle minutes and hours from now
            if ($diff < 120) {
                return 'in a minute';
            } elseif ($diff < 3600) {
                return 'in ' . floor($diff / 60) . ' minutes';
            } elseif ($diff < 7200) {
                return 'in an hour';
            } elseif ($diff < 86400) {
                return 'in ' . floor($diff / 3600) . ' hours';
            }
        } elseif ($day_diff == 1) {
            return 'Tomorrow';
        } elseif ($day_diff < 4) {
            return date('l', $ts);
        } elseif ($day_diff < 7 + (7 - date('w'))) {
            return 'next week';
        } elseif (ceil($day_diff / 7) < 4) {
            return 'in ' . ceil($day_diff / 7) . ' weeks';
        } elseif (date('n', $ts) == date('n') + 1) {
            return 'next month';
        } else {
            return date('F Y', $ts);
        }
    }
}

En utilisant cette fonction , vous pouvez facilement générer des chaînes date/heure relatives conviviales à partir d'horodatages.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn