2009-03-21 5 views
11

Possible en double:
How do I calculate relative time?Comment créer un format de date convivial (par exemple "soumis 2 jours")

Je veux formater les dates sur mon application web social un peu comme Digg.com et d'autres sites font. Là, vous voyez très dates amicales, telles que:

  • tout à l'heure
  • il y a 3 minutes
  • il y a une heure
  • il y a 2 semaines
  • il y a 6 mois
  • etc

Avant ma tête envelopper la création d'une telle chose, personne ne sait de tout prêt à aller script pour ce où J'ai simplement inséré un datestamp et un texte de date amical est donné basé sur comment cela se rapportait à l'heure actuelle?

PS: J'ai besoin ce en PHP, mais pseudo-code ou toute autre langue est très bien aussi.

Répondre

10

C'est un double de ce question. Il a une foule d'exemples de code sur la façon d'accomplir cela, en plus du code que ce même site utilise. Je l'ai jeté un coup d'oeil et il semble y avoir une implémentation PHP là aussi. En plus de tout cela, si vous utilisez jQuery vous pouvez faire ce client avec quelque chose comme le plugin timeago. Il a l'avantage de mettre à jour le texte au fur et à mesure que le temps passe, donc si vous chargez une page et qu'il dit "posté il y a 5 minutes", il vous dit "posté il y a 10 minutes"

2

Merci à tous pour les réponses, et désolé pour la double question. Je n'ai pas trouvé le doublon quand je le cherchais car je ne savais pas vraiment quels termes de recherche utiliser.

Quoi qu'il en soit, j'ai mon problème résolu grâce à la traduction PHP du code utilisé par stackoverflow. J'ai fait un petit changement dans le calcul du delta:

$delta = strtotime(gmdate("Y-m-d H:i:s", time())) - $time; 

Depuis je stocke mes dates dans MySQL comme horodatage au format GMT, je dois utiliser le même pour le calcul de l'heure actuelle. Cela permet une comparaison de fuseau horaire neutre, ce qui est exactement ce qui est nécessaire dans mon cas.