Относительная дата и время на 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

Несколько сайтов на одном VPS: размещение для студии

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

VPS для October CMS: как выбрать сервер и подготовить его к работе

Для October CMS важны совместимые версии ПО, доступ к консоли и настройка окружения. Разбираем, с какой конфигурации начать проверку и что подготовить перед запуском сайта.

Где хранить резервные копии сайта, чтобы они пережили аварию

Архив есть. А получится ли из него вернуть сайт? Разбираем состав резервной копии, выбор хранилища и проверку, которая покажет, переживёт ли бэкап аварию сервера.

Атаки на дата-центры: как подготовить сайт к отказу площадки

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

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