Aller au contenu
đŸ› ïžToolsShed

Formateur de Temps Relatif

Convertit les dates et horodatages en chaĂźnes comme 'il y a 3 jours' ou 'dans 2 mois'.

À propos de cet outil

Le Formateur de Temps ÉcoulĂ© convertit les dates absolues et les horodatages en descriptions de temps relatif que les humains comprennent naturellement, comme '3 jours ago' ou 'dans 2 mois'. Ce format est particuliĂšrement utile dans les applications de chat, les rĂ©seaux sociaux, les fils d'activitĂ© et les outils de gestion de projet oĂč afficher quand quelque chose s'est produit importe plus que d'afficher la date et l'heure exactes.

Il suffit d'entrer une date ou un horodatage dans l'outil, et il affiche instantanĂ©ment il y a combien de temps ce moment s'est produit ou Ă  quelle distance dans le futur il se trouve. Le formateur gĂšre intelligemment les diffĂ©rentes Ă©chelles de temps—secondes, minutes, heures, jours, mois et annĂ©es—en sĂ©lectionnant automatiquement l'unitĂ© la plus significative pour la lisibilitĂ©.

Cet outil est inestimable pour les dĂ©veloppeurs qui construisent des applications en temps rĂ©el, les crĂ©ateurs de contenu qui gĂšrent les publications et les mises Ă  jour, et quiconque souhaite comprendre les diffĂ©rences de temps d'un coup d'Ɠil sans faire de calculs mentaux.

Questions Fréquentes

Implémentation du Code

from datetime import datetime, timezone

def time_ago(past: datetime, now: datetime = None) -> str:
    """Return human-readable relative time string."""
    if now is None:
        now = datetime.now(timezone.utc)
    diff = now - past
    total_seconds = int(diff.total_seconds())
    if total_seconds < 0:
        return "in the future"

    minutes = total_seconds // 60
    hours = minutes // 60
    days = hours // 24
    months = days // 30
    years = days // 365

    if total_seconds < 60:
        return f"{total_seconds} second{'s' if total_seconds != 1 else ''} ago"
    elif minutes < 60:
        return f"{minutes} minute{'s' if minutes != 1 else ''} ago"
    elif hours < 24:
        return f"{hours} hour{'s' if hours != 1 else ''} ago"
    elif days < 30:
        return f"{days} day{'s' if days != 1 else ''} ago"
    elif months < 12:
        return f"{months} month{'s' if months != 1 else ''} ago"
    else:
        return f"{years} year{'s' if years != 1 else ''} ago"

# Examples
from datetime import timedelta
now = datetime(2025, 6, 15, 12, 0, 0, tzinfo=timezone.utc)
print(time_ago(now - timedelta(seconds=30), now))   # 30 seconds ago
print(time_ago(now - timedelta(minutes=45), now))   # 45 minutes ago
print(time_ago(now - timedelta(days=3), now))       # 3 days ago
print(time_ago(now - timedelta(days=400), now))     # 1 year ago

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.