Как формат даты 'c' или 'r' работает в PHP? - PullRequest
2 голосов
/ 21 июня 2019

Я попытался отформатировать некоторую дату, используя формат 'c' или 'r', и у меня получились странные результаты.

Я пробовал интерпретатор PHP со своего персонального компьютера или с помощью php:latest образа Docker.

Попутно я перепробовал много методов, и даже результаты этих удивили меня.

var_dump(DateTime::createFromFormat('c', (new DateTime())->format('c'))); // false
// or
var_dump(DateTime::createFromFormat('r', (new DateTime())->format('r'))); // false

(new DateTime())->format('c') возвращает строку в ожидаемом формате, но я думал, что создание объекта DateTime из него вернет действительный объект, а не false.

Что это за поведение?

Спасибо за вашу помощь:)

1 Ответ

1 голос
/ 21 июня 2019

Эти символы формата неизвестны согласно документации , где также указано (выделено мое):

$format Формат, в котором должен быть передан в строке.Смотрите параметры форматирования ниже.В большинстве случаев могут использоваться те же буквы, что и для date().

Вы можете позвонить DateTime::getLastErrors(), чтобы увидеть больше (хотя и немного сбивающих с толку) деталей:

Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 2
    [errors] => Array
        (
            [0] => The format separator does not match
            [1] => Trailing data
        )

)
...