2013-03-11 22 views
4

我想在PHP中转换日期格式。无法绕过此错误:调用未定义的方法DateTime :: createFromFormat()

下面的代码创建持久性错误

$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低中间

+1

什么PHP版本正在运行?使用'phpinfo()检查' – 2013-03-11 14:27:09

+1

你是否在任何地方使用命名空间? – 2013-03-11 14:28:36

回答

-2

这通常发生如果。该方法无法找到,这意味着您没有包含包含此方法的文件。你能发布DateTime :: createFromFormat的代码吗?

+4

这是一个以PHP 5.3开头的内置PHP函数 – 2013-03-11 14:38:05

+0

感谢您的关注; PHP版本是5.3.16;唯一使用DateTime的代码是我引用的示例 – user2157155 2013-03-11 19:15:47

+0

感谢您的关注 – user2157155 2013-03-11 19:16:46

-2

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

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

生成输出:1980年12月1日 (J,而不要d删除从天数的0)

请注意:

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

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

+0

您所做的与'date(“j MY”,strtotime($ myDate))'完全相同,只是使用过程接口DateTime类。它不等同于'DateTime :: createFromFormat'。 – deceze 2013-04-18 04:31:31

4

只有 2为什么你应该得到这个错误可能的原因有:

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