2012-10-17 37 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 
相關問題