2009-03-21 7 views
11

Mögliche Duplizieren:
How do I calculate relative time?Wie ein freundliches Datumsformat (zB „vor 2 Tagen abgegeben“) erstellen

Ich mag viel auf meinem sozialen Web-App Daten zu formatieren, wie Digg.com und andere Seiten tun. Dort sehen Sie sehr freundlich, wie zB an:

  • gerade jetzt
  • vor 3 Minuten
  • vor einer Stunde
  • vor 2 Wochen
  • vor 6 Monaten
  • etc

Bevor ich meinen Kopf darum herumlege, so etwas zu kreieren, weiß irgendjemand von irgendwelchen vorgefertigten Skripten dafür, wo Ich füge einfach einen Datumsstempel ein und ein freundlicher Datumstext wird gegeben, wie es sich auf die aktuelle Zeit bezieht?

PS: Ich brauche das in PHP, aber Pseudo-Code oder eine andere Sprache ist auch in Ordnung.

Antwort

10

Dies ist ein Duplikat von diesem question. Es hat eine Flut von Code-Beispielen darüber, wie dies zu erreichen ist, zusätzlich zu dem Code, den diese Website verwendet. Ich warf einen Blick darauf und es scheint dort auch eine PHP-Implementierung zu geben.

Zusätzlich zu all dem, wenn sind Sie jQuery verwenden, können Sie diesen Client-Seite wie die timeago-Plugin mit etwas tun. Es hat den Vorteil, den Text im Laufe der Zeit zu aktualisieren, also wenn Sie eine Seite laden und es sagt "vor 5 Minuten geschrieben" und schauen Sie wieder 5 Minuten später, es heißt "vor 10 Minuten geschrieben"

2

Dank allen für die Antworten und sorry für die doppelte Frage. Ich habe das Duplikat nicht gefunden, als ich danach suchte, weil ich nicht wirklich wusste, welche Suchbegriffe ich verwenden sollte.

Wie auch immer, ich habe mein Problem dank der PHP-Übersetzung des von Stackoverflow verwendeten Codes gelöst. Ich machte eine winzige Änderung der Delta bei der Berechnung:

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

Da ich meine Daten in MySQL als Zeitstempel im GMT-Format bin speichern, muss ich für die Berechnung der aktuellen Zeit die gleiche verwenden. Dies ermöglicht einen zeitzonenneutralen Vergleich, der genau in meinem Fall benötigt wird.

Verwandte Themen