Манипулирование датой. Часть 2
Эта статья является продолжением предыдущей статьи. первая часть находится здесь
Хотя в реальности, мы редко когда манипулируем временем, но с помощью класса DateTime мы можем сделать это. Это означает, что объекты класса DateTime изменяемы.
Сложение дат
Сложение дат осуществляется через специальный метод DateTime:add, который в качестве единственного параметра принимает объект класса DateIntreval.
Давайте посмотрим на пример:
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
$today->add(new DateInterval('P2D'));
echo $today->format('Y-m-d') . PHP_EOL;
Большая часть когда представленная выше проста. Единственным не совсем тривиальным моментом является то, как создается объект DateInterval. Конструктор класса DateInterval принимает строку в качестве параметра, которая содержит кодовое обозначение – спецификатор интервала.
Со всем многообразием спецификаций интервала вы можете ознакомится на сайте PHP.
Формат кодового обозначения начинается с буквы P, обозначающей период. Продолжительность каждого периода обозначается целым числом, за которым следует показатель периода. Если в формат включены еще и временные элементы, то эту часть спецификации предваряет буква T.
В коде выше, мы использовали формат 'P2D', который обозначает два дня.
Вычитание
по аналогии с методом DateTime::add, вычитание дат производится через DateTime::sub. Сигнатура у метода DateTime::sub такая же как и у предыдущего метода.
Для того, чтобы вычесть два дня из сегодняшней даты $today мы сделаем следующее:
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
$today->sub('-2 days');
echo $today->format('Y-m-d') . PHP_EOL;
Преобразование (модификация) даты
Объект класса DateTime также может быть преобразован с помощью метода DateTime::modify. Если сравнивать этот метод с двумя предыдидущими, то отличие заключается в том, что метод DateTime::modify принимает в качестве аргумента строку, представляющую собой устное определение даты и времени. Полный список таких строк может быть найден здесь.
Для вычитания двух дней из сегодняшней даты $today с помощью метода DateTime::modify сделаем следующее.
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
$today->modify('-2 days');
echo $today->format('Y-m-d') . PHP_EOL;
Таким образом, в данной статье мы рассмотрели как форматировать и манипулировать датой и временем в ООП стиле с помощью объекта DateTime.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.