2012-10-17 31 views
2

我花了几天的时间,并试图谷歌它也没有运气。 我有一个日期存储在字符串$ dob ='2012-10-06 10:45:45 +0000'; 我尝试使用下面的代码将其转换为日期:到目前为止在php中的字符串

$timezone = 'Europe/Brussels'; 
$d = DateTime::createFromFormat("Y-m-d H:i:s P",$dob ,new DateTimeZone($timezone)); 
    echo $d->format("Y-m-d"); 

但我收到以下错误信息:非对象 如何能上调用一个成员函数的格式(): 致命错误我使用以下格式从字符串创建DateTime:2012-10-06 10:45:45 +0000? 谢谢你的帮助...

+1

您对'createFromFormat'的调用返回'FALSE',因此当您调用'format'时,'$ d'是非对象。 – Vulcan

回答

4

看起来你的日期中有空格不在你的模式中。另外,P => O因为P有一个冒号,其中O只是4位数字。

改为尝试"Y-m-d H: i: s O"

您可能会收到错误消息,因为createFromFormat()失败并且您实际上没有在$ d中的DateTime对象。

如果这样不能解决问题,请查看DateTime::getLastErrors()。这可以帮助解释这个问题。

这里有一个链接到一个PHP沙箱我的建议的工作:http://sandbox.onlinephpfunctions.com/code/ee06a025fb9ab47f136eba221382c8b2f84be703

你必须按下面的代码运行按钮。

+0

它的工作,非常感谢你。 O代表什么? –

+1

这和P一模一样,除了P期望a:在中间。 O会是+0000,P会看起来像+00:00。 –

-1
YY-MM-DD HH: II: SS tzcorrection 
相关问题