DateTime::sub
изменяет дату в текущем объекте и возвращает ее копию для цепочки методов.Итак, в вашем примере вы изменяете дату обоих объектов, поэтому для обоих будет установлено значение 30 секунд назад.
Попробуйте это - для сравнения используются два отдельно инициализированных объекта:
$current1 = new \DateTime();
$current2 = new \DateTime();
$filterRange = new \DateInterval('PT30S');
$current2->sub($filterRange);
var_dump($current1); // Should return the current time
var_dump($current2); // Should return the current time - 30 seconds
или, как указывает @salathe, используйте ключевое слово clone
, конечно.