Вот тестовый код:
<?php
ini_set('date.timezone', 'Europe/London');
$dt = new \DateTime('0000-00-00 00:00:00');
var_dump($dt);
Это обеспечивает:
object(DateTime)[1]
public 'date' => string '-0001-11-30 00:00:00' (length=20)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/London' (length=13)
Если это не действительная дата. Я не понимаю возвращаемое значение, особенно месяц... Можете ли вы объяснить?