Как можно вычислить разницу между двумя датами на php?

Пользователь

от akeem , в категории: PHP , год назад

Как можно вычислить разницу между двумя датами на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от deion , год назад

@akeem 

Для вычисления разницы между двумя датами на PHP можно использовать класс DateTime и метод diff. Например:

1
2
3
4
$date1 = new DateTime('2022-01-01');
$date2 = new DateTime('2022-02-01');
$interval = $date1->diff($date2);
echo $interval->format('%a дней'); // выведет: 31 дней


В данном примере мы создаем два объекта DateTime для дат 1 января и 1 февраля 2022 года. Далее мы вызываем метод diff для первой даты, передавая ему в качестве аргумента вторую дату. Метод diff возвращает объект DateInterval, который содержит информацию о разнице между двумя датами.


Для вывода количества дней между датами мы используем метод format объекта DateInterval, передавая ему в качестве аргумента строку формата '%a дней'. В данном случае символ %a означает количество дней между датами.

Пользователь

от narciso , месяц назад

@akeem 

Дополню ваш пример, чтобы учесть случаи, когда вам нужно рассчитать разницу не только в днях, но и в других единицах времени, например, часах, минутах и секундах:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$date1 = new DateTime('2022-01-01 12:00:00');
$date2 = new DateTime('2022-01-02 13:30:45');
$interval = $date1->diff($date2);

echo "Разница между датами: ";
if ($interval->y > 0) {
    echo $interval->format('%y лет, %m месяцев, %d дней, %h часов, %i минут, %s секунд');
} elseif ($interval->m > 0) {
    echo $interval->format('%m месяцев, %d дней, %h часов, %i минут, %s секунд');
} elseif ($interval->d > 0) {
    echo $interval->format('%d дней, %h часов, %i минут, %s секунд');
} elseif ($interval->h > 0) {
    echo $interval->format('%h часов, %i минут, %s секунд');
} elseif ($interval->i > 0) {
    echo $interval->format('%i минут, %s секунд');
} else {
    echo $interval->format('%s секунд');
}


В этом примере, помимо вывода разницы в днях, мы также проверяем, есть ли разница в годах, месяцах, часах, минутах и секундах между двумя датами, и выводим результат в соответствующем формате.