Относительная дата и время на PHP

В одном проекте решили подключить фичу — вывод относительной даты и времени на PHP, как сделать преобразование даты создания материала, даты записи, да чего угодно в БД или какой-либо другой даты в дату и/или время, относительно текущего часа и даты.

Например, у нас есть материал, созданный 29-го июня 2016 года в 20-10, а сейчас уже 20-11, т.е. минуту назад. А завтра уже будет день назад. Надо это учесть и вывести это. Так реализовано в ВКонтакте.

Вот такая простая функция на PHP, которая делает относительные даты и время.

/**
* time_elapsed_string
*
* @param $datetime
* @param bool $full
* @return string
*/
time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;
    $string = array(
                    'y' => 'г.',
                    'm' => 'мес.',
                    'w' => 'нед.',
                    'd' => 'д.',
                    'h' => 'ч.',
                    'i' => 'мин.',
                    's' => 'сек.');
    foreach ($string as $k => &$v) {
        if ($diff->$k) 
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? '' : '');
        else
            unset($string[$k]);
    }
    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' назад' : 'сейчас';
}

Данные должны передаваться в формате 2016-06-29 17:07:27. Пример использования:

$date = "2016-06-29 17:07:27";
echo time_elapsed_string($date);

P.S. Пока есть косяк — не учитывается часовой пояс. Но думаю скоро исправим в функции относительная дата и время на PHP

Чек-лист школьного сайта, о котором почему-то никто не говорит

Один раз я потратил ночь, проверяя сайт школы перед жалобой в департамент. С тех пор у меня есть личный чек-лист проверки сайта образовательной организации — без бюрократии, но с реальными подводными камнями.

Разработка корпоративного сайта: от стратегии до запуска

Разработка корпоративного сайта — не про «красивый дизайн» и шаблон на WordPress. Это про доверие, продажи, удобство партнёров и сотрудников. Разбираем, как сделать сайт, который работает на бренд, а не лежит «для галочки».

Посетители на сайт: полное руководство по подсчёту и источникам трафика для начинающих

Посещаемость есть, продаж нет? Значит, это не трафик, а статистическая иллюзия. Разбираем, как находить «правильных» людей, отсеивать шум и заставить аналитику работать на бизнес, а не на красивый график.

Пентест — тестирование безопасности вашего сайта и приложений

Киберугрозы эволюционируют: взлом СДЭК с ущербом 575 млн руб, рост атак на 60%, применение ИИ в фишинге и вредоносном ПО. Пентест — это санкционированное тестирование безопасности, выявляющее уязвимости до того, как их найдут хакеры. Узнайте, как защитить свой бизнес.

Последние кейсы
Посмотреть все проекты
Начать проект вместе с нами
Заполните форму и отправьте
нам сообщение!
Если у Вас возникли вопросы, предложения, либо Вы желаете оформить заявку на заказ услуги — Добро пожаловать!
Контакты:
Бронзовый партнер October CMS:
Бронзовый партнер October CMS