PHP Datetime не может преобразовать отрицательную дату ISO8601

Преобразование отрицательной даты с 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

4

Решение

В соответствии с руководством Формат

 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

Я надеюсь, что это помогает.

0

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

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

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