【问题标题】:How are 'c' or 'r' date format working in PHP?'c' 或 'r' 日期格式在 PHP 中如何工作?
【发布时间】:2019-06-21 13:53:37
【问题描述】:

我尝试使用“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

这是什么行为?

感谢您的帮助:)

【问题讨论】:

  • $t = new DateTime(); echo $t->format('c'); // 012345这就够了,我觉得你把事情复杂化了
  • 我正在尝试检查项目中的用户输入,而不仅仅是从 void 创建一个对象。这就是我使用DateTime::createFromFormat() 来检查用户输入是否与日期格式匹配的原因。

标签: php date date-formatting php-7.3


【解决方案1】:

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

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

)

【讨论】:

猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 2019-01-09
  • 2021-07-14
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多