Как сравнивать даты PHP в одной временной зоне

22.11.2022 · PHP

Как сравнивать даты 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 сохраняет момент, меняя его представление. Если источник уже прислал смещение, не приписывайте ему другую зону. Для фильтра за сутки используйте полуинтервал от начала дня включительно до начала следующего исключительно.

Назад в блог

От идеи —
к первому шагу.

Расскажите, что хотите создать.
Обсудим задачу и наметим следующий шаг.