Преобразование отрицательной даты с DateTime дает мне ложь
Тестовый код
var_dump(\DateTime::createFromFormat(\DateTime::ISO8601, '-0001-11-30T00:00:00+0100'));
Результат
boolean false
Ожидаемый результат
object(DateTime)[5]
public 'date' => string '-0001-11-30 00:00:00' (length=20)
public 'timezone_type' => int 1
public 'timezone' => string '+01:00' (length=6)
(или что-то подобное)
Постскриптум Строка с отрицательной датой была создана в формате $ d-> (\ DateTime :: ISO8601);
PHP версия PHP 5.4.28
В соответствии с руководством Формат
public string DateTime::format ( string $format )
где
$format
Format accepted by date().
и если вы посмотрите в Дата()
$d->format(\DateTime::ISO8601);
должно быть
$d->format("c")
потому что «с» в соответствии с форматом в Дата()
Дата ISO 8601 (добавлено в PHP 5)
В моем тесте $d->format(\DateTime::ISO8601);
выходы
2015-09-15T00: 00: 00 + 0200
в то время как
$d->format("c");
выходы
2015-09-15T00: 00: 00 + 02: 00
Я надеюсь, что это помогает.
Других решений пока нет …