Как создать дружественный формат даты (например, "отправлено 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. Это приводит к нейтральному сравнению с часовым поясом, что именно то, что необходимо в моем случае.
Ответ 3
Вы также можете сделать это в SQL:
Лучший способ конвертировать DateTime в n Hours Ago " в SQL