Как создать удобный формат даты (например, "отправлено 2 дня назад") [дубликат]
Возможный Дубликат:
Как мне рассчитать относительное время?
Я хочу форматировать даты в своем социальном веб-приложении так же, как Digg.com и другие сайты делают это. Там вы видите очень дружественные даты, такие как:
- только что
- 3 минуты назад
- час назад
- 2 недели назад
- 6 месяцев назад
- и т.д.
Прежде чем я задумаюсь о создании такой вещи, знает ли кто-нибудь о какой-либо готовой к работе сценарий для этого, где я просто вставляю метку даты, и дается понятный текст даты, основанный на том, как он связан с текущим временем?
PS: Мне это нужно на PHP, но псевдокод или любой другой язык тоже подойдет.
3 answers
Это дубликат этого вопроса . В нем есть множество примеров кода о том, как это сделать, в дополнение к коду, который использует этот самый сайт. Я взглянул на него, и, похоже, там тоже размещена реализация PHP.
В дополнение ко всему этому, если вы используете jQuery, вы можете сделать это на стороне клиента с помощью чего-то вроде плагина timeago. Это имеет то преимущество, что текст обновляется с течением времени, поэтому, если вы загружаете страницу и на ней написано "опубликовано 5 минут назад" и посмотрите еще раз через 5 минут, там написано "опубликовано 10 минут назад"
Спасибо всем за ответы и извините за дублирующий вопрос. Я не нашел дубликат, когда искал его, потому что на самом деле не знал, какие поисковые запросы использовать.
В любом случае, моя проблема решена благодаря PHP-переводу кода, используемого stackoverflow. Я внес одно небольшое изменение в расчет дельты:
$delta = strtotime(gmdate("Y-m-d H:i:s", time())) - $time;
Поскольку я сохраняю свои даты в MySQL в виде метки времени в формате GMT, я должен использовать то же самое для расчета ТЕКУЩЕГО времени. Этот делает сравнение с нейтральным часовым поясом, что именно то, что нужно в моем случае.
Вы также можете сделать это в SQL:
Лучший способ преобразовать дату и время в "n часов назад" в SQL