PHP Datetime ISO8601 преобразование

Я форматирую дату в ISO8601 с помощью Datetime, а затем я восстанавливаю ее, но восстановление не дает мне первоначальное значение.

Тестовый фрагмент

$d = new \DateTime('0000-00-00 00:00:00');
$formatted =  $d->format(\DateTime::ISO8601);
$restored  =  \DateTime::createFromFormat(\DateTime::ISO8601, $formatted);
var_dump($d);
var_dump($formatted);
var_dump($restored);

Результат

object(DateTime)[5]
public 'date' => string '-0001-11-30 00:00:00' (length=20)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Rome' (length=11)

string '-0001-11-30T00:00:00+0100' (length=25)


boolean false

PHP версия PHP 5.4.28

0

Решение

0th of Nulluary не является датой, которая существует. PHP немного вычисляет время (например, 13-й месяц становится 1-м месяцем следующего года, значения <Я работаю в обратном направлении), так что вы получаете то, что получаете. Там нет «правильный» ответ для 0000-00-00ерунда. Он отлично работает с реальными датами.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]