2

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

我已经从我的个人计算机或使用php:latestDocker 映像尝试了 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')返回一个预期格式的字符串,但我认为DateTime从它创建一个对象会返回一个有效的对象,而不是false.

这是什么行为?

谢谢你的帮助 :)

4

1 回答 1

1

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

$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
        )

)
于 2019-06-21T14:56:40.500 回答