'c' 或 'r' 日期格式在 PHP 中如何工作?

How are 'c' or 'r' date format working in PHP?

我尝试使用 'c' 或 'r' 格式格式化一些日期,但结果很奇怪。

我已经从我的个人计算机或使用 php:latest Docker 图像尝试了 PHP 解释器。

一路走来,我尝试了很多方法,这些方法的结果也让我很惊讶。

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') return 是一个预期格式的字符串,但我认为从中创建一个 DateTime 对象将 return 是一个有效对象而不是 false .

这是什么行为?

感谢您的帮助:)

根据 documentation,这些格式字符是未知的,其中也说明了(强调我的):

$format The format that the passed in string should be in. See the formatting options below. In most cases, the same letters as for the date() can be used.

您可以致电 DateTime::getLastErrors() 查看更多(虽然有点混乱)详细信息:

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

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

)