Содержание

lmbDate

Класс lmbDate - инкапсулирует дату (под датой здесь понимается полная дата, то есть число и время) и предоставляет методы для ее работы с ней, в частности модификации и форматирования.

Ниже идут примеры использования различных методов класса lmbDate сгрупированных по назначению.

Инициализация объектов класса lmbDate

Конструктор lmbDate может принимать различное число параметров:

Без параметров, тогда будет использован timestamp из time()

  lmb_require('limb/datetime/src/lmbDate.class.php');
  $date = new lmbDate(); // Эквивалентно new lmbDate(time());

Целочисленное число, которое будет воспринято как timestamp:

 $date = new lmbDate(time());
 $date = new lmbDate(1178867400);

2 целочисленных числа, тогда первое будет воспринято как timestamp, а второе - как часовой пояс:

 $date = new lmbDate(time(), 2);

Объект класса lmbDate, тогда по сути мы создадим клон переданного объекта:

 $date1 = new lmbDate(time());
 $date2 = new lmbDate($date1);

6 целочисленных чисел, которые означают соответственно год, месяц, день, час, минуту и секунду. Любое количество параметров, кроме года и месяца можно опустить (будут использованы нулевые значения или 1 для дня):

 $date1 = new lmbDate(2006, 12, 1, 12, 20, 20);
 $date2 = new lmbDate(2006, 12, 1, 12, 20); // эквивалентно new lmbDate(2006, 12, 1, 12, 20, 0)
 $date3 = new lmbDate(2006, 12, 1, 12); // эквивалентно new lmbDate(2006, 12, 1, 12, 0, 0)
 $date4 = new lmbDate(2006, 12); // эквивалентно new lmbDate(2006, 12, 1)

7 целочисленных чисел, которые означают соответственно год, месяц, день, час, минуту, секунду и часовой пояс.:

 $date = new lmbDate(2006, 12, 1, 12, 20, 20, "Etc/GMT-3");

Строку с датой в ISO-формате:

 $date1 = new lmbDate("2006-12-01 12:20:20");
 $date2 = new lmbDate("2006-12-01 12:20"); // эквивалентно new lmbDate("2006-12-01 12:20:0");
 $date3 = new lmbDate("2006-12-01"); // эквивалентно new lmbDate("2006-12-01 00:00:00");
 $date4 = new lmbDate("2006-12-01 12:20:20", "Etc/GMT-3");

Помимо вызова конструктора lmbDate есть несколько других способов создать объект класса lmbDate:

Например:

  $date = lmbDate :: create("2006-12-01 12:20:20")->addMinute(10)->addSecond(30); // вместо lmbDate("2006-12-01 12:20:20")->addMinute(10)->addSecond(30); , что в PHP запрещено.
  $days = $date->getDateDays();
  $date2 = lmbDate :: createByDays($days + 3); // получили дату на 3 дня больше, то есть "2006-12-03 12:30:50"

Получение информации о текущей дате

lmbDate содержит большой набор методов для получения информации о дате:

Установка дня, соответствующего началу недели

lmbDate содержит статическую переменную $week_starts_at, которая содержит значение дня, который следует считать первым днем недели. По-умолчанию, эта переменная содержит 1, что соответствует Понедельнику. Если стоит значение 0 - это будет значит, что первый день недели - Воскресенье.

Для установки этой переменной есть метод lmbDate :: setWeekStartsAt($n)

Создание нового объекта lmbDate на основе существующего

lmbDate ведет себя как value object, то есть при его изменении всегда создается новый объект. lmbDate содержит большой набор методов, которые позволяют получить новый объект класса lmbDate на основе существующего.

Начнем с самых банальных:

Каждый из этих методов возвращает объект класса lmbDate с новой датой.

Пример:

  $date1 = new lmbDate(time());
  $date2 = $date1->setHour(0)->setMinute(0)->setSecond(0);

lmbDate поддерживает некоторое подобие арифметических операций:

$n - может быть отрицательным числом, то есть таким образом можно отнимать года, месяца, дни и т.д.

Например:

 // Для получения последнего числа текущего месяца.
 $date2 = $date->setDay(1)->addMonth(1)->addDay(-1);

Есть так же группа более специфичных методов, которые могут быть использованы, например, при построении календарей:

Методы для сравнения дат

lmbDate также содержит набор методов для сравнения дат между собой:

Методы для форматирования дат

lmbDate также содержит базовые методы для вывода даты (форматирования) в ISO-формате:

Дополнительные методы