【问题标题】:Can't get around this error: Call to undefined method DateTime::createFromFormat()无法解决此错误:调用未定义的方法 DateTime::createFromFormat()
【发布时间】:2013-02-26 18:33:35
【问题描述】:

我正在尝试在 php 中转换日期格式。

以下代码会产生持续性错误

$myDate = "31/12/1980";

$myDateTime = DateTime::createFromFormat('d/m/Y', "$myDate"); 

$newDate = $myDateTime->format('d M Y');

echo $newDate;

包含 createFromFormat() 的行不断创建错误:“”调用未定义的方法“。 这发生在我的测试 Apache 服务器和实际服务器都运行 PHP 5.3+

我需要包含或需要其他文件吗? 请帮助 - 我只是 php 的中低级。

【问题讨论】:

  • 什么 PHP 版本正在运行?检查使用phpinfo()
  • 您是否在任何地方使用命名空间?

标签: php


【解决方案1】:

只有您应该收到此错误的两个可能原因是:

  1. 您实际上并没有使用 PHP 5.3+,因此该方法不存在。仔细检查您的代码运行的 PHP 版本。也许您的 Web 服务器配置有问题。如果确实如此并且您无法更改它,请参阅PHP DateTime::createFromFormat in 5.2? 了解替代方案。
  2. 您位于命名空间中,需要像 \DateTime::createFromFormat(...) 一样调用它。

【讨论】:

    【解决方案2】:

    我找到了解决方案。 日期转换的正确语法是:

    $myDate = "01-12-1980";
    $tempDate = date_create("$myDate");
    $newDate = date_format($tempDate, 'j M Y');
    echo "$newDate";
    

    产生输出:1980 年 12 月 1 日 (j 而不是 d 会从天数中删除前导零)

    请注意:

    $newDate = date("d M Y", strtotime($myDate));
    

    在此示例中不起作用,因为预期的输入格式是 mm/dd/yyyy,使用任何其他格式都会产生不正确的输出日期

    【讨论】:

    • 你所做的和date("j M Y", strtotime($myDate))完全一样,只是使用了DateTime类的过程接口。它绝不等同于DateTime::createFromFormat
    【解决方案3】:

    如果找不到该方法,通常会发生这种情况,这意味着您没有包含包含该方法的文件。您可以发布 DateTime::createFromFormat 的代码吗?

    【讨论】:

    • 这是 PHP 5.3 开始的内置 PHP 函数
    • 感谢您的关注; PHP版本为5.3.16;唯一使用 DateTime 的代码是我引用的示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2023-03-21
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多