Comment puis-je générer des chaînes de date/heure relatives à partir d'horodatages Unix en PHP ?

DDD
Libérer: 2024-11-26 21:55:10
original
662 Les gens l'ont consulté

How Can I Generate Relative Date/Time Strings from Unix Timestamps in PHP?

Produire une date/heure relative à partir d'horodatages en PHP

Introduction

Détermination de la date relative /time basé sur un horodatage est une tâche courante en programmation. Cette fonctionnalité devient plus complexe lorsque l'on considère différents intervalles de temps et la direction de la conversion (passée ou future).

Réponse

La fonction ci-dessous fournit une approche complète de la conversion Horodatages Unix (obtenus à l'aide de la fonction time()) aux formats date/heure relatifs, tenant compte à la fois du passé et du futur. Il génère des sorties telles que :


  • il y a 2 semaines

  • il y a 1 heure et 60 minutes

  • 15 minutes et 54 secondes il y a

  • après 10 minutes et 15 secondes

La fonction utilise une série d'instructions conditionnelles pour déterminer la représentation temporelle appropriée basé sur la différence entre l'heure actuelle et l'heure horodatage :

<br>fonction time2str($ts)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// Handle syntax variations
if(!ctype_digit($ts)) $ts = strtotime($ts);

// Calculate the difference between now and the timestamp
$diff = time() - $ts;

// Check for exact matches to simplify handling
if($diff == 0) return 'now';

// Handle past timestamps
if($diff > 0)
{
    // Calculate day difference
    $day_diff = floor($diff / 86400);

    // Format past time intervals
    switch(true)
    {
        case ($day_diff == 0):    return constructPastInterval($diff); // Hours, minutes, seconds
        case ($day_diff == 1):    return 'Yesterday';
        case ($day_diff < 7):    return $day_diff . ' days ago';
        case ($day_diff < 31):   return ceil($day_diff / 7) . ' weeks ago';
        case ($day_diff < 60):   return 'last month';
        default:               return date('F Y', $ts);
    }
}
// Handle future timestamps
else
{
    // Calculate absolute difference
    $diff = abs($diff);
    
    // Calculate day difference and format future time intervals based on logic similar to the past case.
}
Copier après la connexion

}

Le La fonction constructPastInterval() n'est pas affichée dans cette réponse mais gère le formatage des intervalles passés (heures, minutes, secondes).

Cette fonction offre une solution robuste et polyvalente pour générer des représentations date/heure relatives à partir d'horodatages, éliminant ainsi le besoin de plusieurs scripts ou d'un codage personnalisé complexe.

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!

source:php.cn
Déclaration de ce site Web
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal