Как создать дружественный формат даты (например, "отправлено 2 дня назад" )

Возможный дубликат:
Как рассчитать относительное время?

Я хочу форматировать даты в своем социальном веб-приложении, как это делают Digg.com и другие сайты. Там вы видите очень дружеские даты, например:

  • сейчас
  • 3 минуты назад
  • 1 час назад
  • 2 недели назад
  • 6 месяцев назад
  • и т.д.

Прежде чем я закрою голову, создавая такую ​​вещь, кто-нибудь знает о любом готовом к использованию script для этого, где я просто вставляю datestamp и дается дружественный текст даты на основе того, как это связано с текущим время?

PS: Мне нужно это в PHP, но псевдокод или любой другой язык тоже хорош.

Ответ 1

Это дубликат этого question. Он имеет шквал образцов кода о том, как это сделать, в дополнение к коду, который использует этот сайт. Я взглянул на него, и там, кажется, есть PHP-версия, размещенная там тоже.

В дополнение ко всему этому, если вы используете jQuery, вы можете сделать это на стороне клиента с чем-то вроде timeago. У него есть преимущество в обновлении текста с течением времени, поэтому, если вы загружаете страницу, и она говорит "отправлено 5 минут назад" и снова выглядит 5 минут спустя, она говорит "Опубликовано 10 минут назад"

Ответ 2

Спасибо всем за ответы и извините за дублированный вопрос. Я не нашел дубликат, когда искал его, потому что я действительно не знал, какие условия поиска использовать.

В любом случае, у меня проблема решена благодаря PHP-переводу кода, используемого stackoverflow. Я сделал одно крошечное изменение в вычислении дельта:

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

Поскольку я храню свои даты в MySQL как временную метку в формате GMT, я должен использовать ее для вычисления времени CURRENT. Это приводит к нейтральному сравнению с часовым поясом, что именно то, что необходимо в моем случае.