Maison >développement back-end >tutoriel php >Comment convertir un horodatage en « Time Ago » en PHP ?

Comment convertir un horodatage en « Time Ago » en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 12:57:11741parcourir

How to Convert a Timestamp to

Convertir l'horodatage en Time Ago en PHP : un guide complet

Pour convertir un horodatage dans un format lisible par l'homme tel que "3 minutes ago" en PHP, nous pouvons utiliser la fonction pratique time_elapsed_string(). Explorons son utilisation et approfondissons sa mise en œuvre.

Utilisation de la fonction :

La fonction time_elapsed_string() prend une chaîne datetime comme premier argument, représentant l'horodatage souhaité. à convertir. Vous pouvez éventuellement spécifier true comme deuxième argument pour afficher le temps écoulé complet en années, mois, semaines, jours, heures, minutes et secondes.

Par exemple :

echo time_elapsed_string('2013-05-01 00:22:35');
echo time_elapsed_string('@1367367755'); # timestamp input
echo time_elapsed_string('2013-05-01 00:22:35', true);

Sortie de la fonction :

La fonction renvoie une chaîne représentant le temps écoulé de manière conviviale format :

4 months ago
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago

Implémentation :

Examinons l'implémentation de la fonction time_elapsed_string() :

function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);

    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'd' => 'day',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}

Cette fonction crée d'abord des instances de DateTime pour l'heure actuelle ($now) et l'horodatage fourni ($ago). Il calcule ensuite la différence entre les deux à l'aide de la méthode diff(), qui renvoie un objet DateInterval contenant le temps écoulé dans différentes unités.

La fonction modifie le composant jours de l'objet $diff pour tenir compte des semaines et supprime les composants de valeur nulle du tableau $string. Si le paramètre $full est vrai, le tableau complet est utilisé pour la sortie ; sinon, seul le premier composant est sélectionné.

Enfin, la fonction convertit le tableau $string en une chaîne lisible par l'homme en joignant les composants par des virgules et en ajoutant "il y a". Si le temps écoulé est inférieur à une minute, il renvoie "tout à l'heure".

En comprenant l'implémentation de cette fonction pratique, vous pouvez convertir efficacement les horodatages en chaînes d'il y a une heure dans vos applications PHP, ce qui facilite la tâche. les utilisateurs pour comprendre les informations de date.

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