<?php
$now = new DateTime('now', new \DateTimeZone('UTC'));
// true, всё верно, сдвиг одинаковый
var_dump((new DateTimeZone('Africa/Cairo'))->getOffset($now) === (new DateTimeZone('Europe/Paris'))->getOffset($now));
$d1 = new DateTimeImmutable('2020-01-01 15:00', new DateTimeZone('Europe/Paris'));
$d2 = new DateTimeImmutable('2020-01-01 15:00', new DateTimeZone('Africa/Cairo'));
// вот тут проблема, unix должен быть одинаковый
var_dump($d1->getTimestamp() === $d2->getTimestamp() + 3600);