среда, 23 октября 2013 г.

DateTime. Интервал между датами.


Допустим, в проекте требуется указывать сколько ещё элемент будет активен. Или например сколько времени пользователь уже зарегистрирован на сайте. Или сколько дней назад он заходил последний раз... Да мало ли применений отформатированному интервалу?

Читаем документацию по классу DateTime. Его конструктор вполне радостно воспримет стандартный битриксовый формат типа 26.02.2013 12:34:02, поэтому спокойно подаём его на вход при создании объекта. Метод diff возвращает объект класса DataInterval.
//текущая датавремя
$current_date = new DateTime();
//датавремя с которым надо вычислить интервал
$date = new DateTime('26.02.2013 12:34:02');
//интервал разницы между текущим и нужным датавременем
$interval = $current_date->diff($date);

Давайте заглянем внутрь объекта $interval.
DateInterval Object
(
    [y] => 0      //сколько лет
    [m] => 7      //месяцев
    [d] => 25     //дней
    [h] => 5      //часов
    [i] => 7      //минут
    [s] => 5      //секунд
    [invert] => 1 //дата в прошлом (минусовая)
    [days] => 239 //всего дней в интервале
)

Вот и всё, никаких тонн кода. Пусть PHP сам старается. Кстати, далее объект $interval можно использовать либо в своём велосипеде, либо отформатировать методом format.

Комментариев нет:

Отправить комментарий