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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@greyson 

В PHP даты и время можно складывать и сравнивать с помощью встроенных функций и объектов, таких как DateTime и DateInterval. Вот примеры использования:

  1. Сложение даты и времени:
1
2
3
4
5
6
7
8
$date1 = new DateTime('2021-01-01');
$time1 = new DateTime('10:00:00');

$date2 = new DateTime('2021-01-02');
$time2 = new DateTime('12:00:00');

$sum = $date1->diff($date2)->format('%a days') + $time1->diff($time2)->format('%h hours');
echo $sum; // Выводит "1 days 2 hours"


  1. Сравнение даты и времени:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$date1 = new DateTime('2021-01-01');
$date2 = new DateTime('2021-01-02');

if ($date1 < $date2) {
    echo 'date1 меньше, чем date2';
} elseif ($date1 > $date2) {
    echo 'date1 больше, чем date2';
} else {
    echo 'date1 равно date2';
}


Обратите внимание, что при сравнении объектов DateTime также проверяется их время. Если вы хотите сравнить только дату без учета времени, вы можете использовать метод setTime(0, 0) для обнуления времени у объектов перед сравнением:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$date1->setTime(0, 0);
$date2->setTime(0, 0);

if ($date1 < $date2) {
    echo 'date1 меньше, чем date2 (без учета времени)';
} elseif ($date1 > $date2) {
    echo 'date1 больше, чем date2 (без учета времени)';
} else {
    echo 'date1 равно date2 (без учета времени)';
}


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

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

@greyson 

Правильно складывать и сравнивать дату и время в PHP можно с помощью объектов DateTime и DateInterval, как показано в приведенных вами примерах.


Для сложения даты и времени используется метод diff(), который возвращает разницу между двумя объектами DateTime в виде объекта DateInterval. Затем с помощью метода format() можно получить разницу в нужном формате (например, в днях и часах).


Для сравнения дат и времени можно использовать операторы сравнения (<, >, ==) для сравнения объектов DateTime. Если нужно сравнить только дату без учета времени, можно обнулить время у объектов с помощью метода setTime(0, 0) перед сравнением.


Указанные методы и операторы позволяют удобно и корректно работать с датами и временем в PHP.