Получение даты предыдущего дня в PHP: объяснение различных методов

В PHP существует несколько способов получить дату предыдущего дня. Если вам это нужно для обработки данных, анализа журналов или для каких-либо других целей, в этой статье будут рассмотрены различные методы выполнения этой задачи. Мы предоставим примеры кода для каждого метода, чтобы вы могли выбрать тот, который лучше всего соответствует вашим требованиям.

Метод 1: использование функций strtotime() и date()
Функция strtotime() позволяет преобразовать строку даты в временную метку Unix, которой затем можно манипулировать с помощью функции date(). Вычитая 24 часа (в секундах) из текущей метки времени, мы можем получить метку времени предыдущего дня и отформатировать ее как строку даты.

$prevDay = date('Y-m-d', strtotime("-1 day"));
echo $prevDay;

Метод 2: использование объектов DateTime и DateInterval
Класс PHP DateTime предоставляет мощный набор методов для работы с датами и временем. Мы можем создать объект DateTime для текущей даты, а затем вычесть DateInterval одного дня, чтобы получить предыдущий день.

$today = new DateTime();
$prevDay = $today->sub(new DateInterval('P1D'))->format('Y-m-d');
echo $prevDay;

Метод 3: использование функции mktime()
Функция mktime() возвращает временную метку Unix для указанной даты и времени. Извлекая значения дня, месяца и года из текущей даты и вычитая один день из значения дня, мы можем получить дату предыдущего дня.

$prevDay = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')));
echo $prevDay;

Метод 4: вычисление предыдущего дня с помощью DateTimeImmutable
Подобно классу DateTime, DateTimeImmutable предоставляет неизменяемое представление даты и времени. Это позволяет нам создать новый экземпляр на основе текущей даты, а затем изменить его, вычитая один день.

$today = new DateTimeImmutable();
$prevDay = $today->sub(new DateInterval('P1D'))->format('Y-m-d');
echo $prevDay;

В этой статье мы рассмотрели четыре различных метода получения даты предыдущего дня в PHP. Предпочитаете ли вы работать с strtotime(), DateTime, mktime() или DateTimeImmutable, у вас есть множество вариантов на выбор. Не стесняйтесь использовать приведенные примеры кода в качестве отправной точки и настраивать их в соответствии со своими конкретными потребностями. Приятного кодирования!