Расчет даты в будущем или прошлом

PHP:
Расчет даты в будущем или прошлом

Как:

PHP упрощает работу с датами с помощью DateTime и DateInterval. Посмотрите:

<?php
// Сегодняшняя дата
$today = new DateTime();
echo $today->format('Y-m-d H:i:s') . "\n";

// Добавить 10 дней
$today->add(new DateInterval('P10D'));
echo $today->format('Y-m-d H:i:s') . "\n";

// Вычесть 2 месяца
$today->sub(new DateInterval('P2M'));
echo $today->format('Y-m-d H:i:s') . "\n";
?>

Вывод может быть таким:

2023-04-01 12:34:56
2023-04-11 12:34:56
2023-02-11 12:34:56

Глубже

В прошлом расчёты дат в PHP были более подвержены ошибкам. strtotime, хотя и по-прежнему полезен, может подвести в крайних случаях. DateTime и DateInterval принесли точность и ясность, ориентированную на объекты.

Альтернативы? Конечно. Библиотеки вроде Carbon оборачивают функциональность дат в PHP для большей читабельности и функционала, но во многих случаях встроенных классов PHP будет вполне достаточно.

Под капотом, DateTime::add() и DateTime::sub() изменяют объект, так что нет необходимости в повторном присвоении. Они обрабатывают временные единицы последовательно, учитывая такие вещи, как високосные года и изменения времени из-за перехода на летнее/зимнее время, что в противном случае могло бы быть настоящей головной болью.

Смотрите также