Как сравнивать даты PHP в одной временной зоне
Заказ создан около полуночи, а в отчёте относится к соседнему дню. Начните с явной временной зоны: строка даты без зоны сама по себе не определяет момент времени.
$zone = new DateTimeZone( "Europe/Moscow" ); $created = new DateTimeImmutable( "2022-09-15 23:40:00", $zone ); $utc = $created->setTimezone( new DateTimeZone( "UTC" ) ); echo $utc->format( "Y-m-d H:i:s" );
В примере московское время превращается в 20:40 UTC. setTimezone сохраняет момент, меняя его представление. Если источник уже прислал смещение, не приписывайте ему другую зону. Для фильтра за сутки используйте полуинтервал от начала дня включительно до начала следующего исключительно.