2009-03-21 14 views
11

Eventuali duplicati:
How do I calculate relative time?Come creare un formato di data amichevole (per esempio "presentate 2 giorni fa")

voglio formattare date sul mio social web app molto simile Digg.com e altri siti fanno. Ecco, vedi le date molto cordiale, come ad esempio:

  • solo ora
  • 3 minuti fa
  • ore fa
  • 2 settimane fa
  • 6 mesi fa
  • ecc

Prima che mi capiti di creare una cosa del genere, qualcuno sa di uno script pronto per questo dove Inserisco semplicemente un datestamp e viene dato un testo di data amichevole in base a come è correlato all'ora corrente?

PS: Ho bisogno di questo in PHP, ma anche lo pseudo-codice o qualsiasi altra lingua va bene.

risposta

10

Questo è un duplicato di questo question. Ha una moltitudine di esempi di codice su come ottenere questo risultato, oltre al codice utilizzato proprio da questo sito. L'ho guardato e sembra che ci sia anche un'implementazione PHP.

Oltre a tutto questo, se si utilizza jQuery è possibile eseguire questa parte client con qualcosa come il plugin timeago. Ha il vantaggio di aggiornare il testo con il passare del tempo, quindi se carichi una pagina e dice "postato 5 minuti fa" e guarda ancora 5 minuti dopo, "pubblicato 10 minuti fa"

2

Grazie a tutti per le risposte, e mi dispiace per la domanda duplicato. Non ho trovato il duplicato quando lo stavo cercando perché non sapevo veramente quali termini di ricerca utilizzare.

Ad ogni modo, ho risolto il mio problema grazie alla traduzione in PHP del codice utilizzato da StackOverflow. Ho fatto una piccola modifica nel calcolo del delta:

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

Dato che io sono la memorizzazione di date in MySQL come timestamp nel formato GMT, devo usare la stessa per calcolare l'ora corrente. Questo rende un confronto neutrale rispetto al fuso orario, che è esattamente ciò che è necessario nel mio caso.