2012-01-05 246 views
7

你怎麼解決的錯誤:致命錯誤:調用未定義的方法的DateTime :: createfromformat()

Fatal error: Call to undefined method DateTime::createfromformat() 

的誤差在35行發生的事情這是我的代碼行31讀取到45

// check database for necessary updates 

$update = mysql_query("SELECT * FROM rent WHERE colour='#3C0'"); 
while($row_update = mysql_fetch_array($update)) { 
    $datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
    $datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 
     // date is between do nothing 
    } else { 
     // date is not between so update 
     $update_result = mysql_query("UPDATE rent SET colour='#F0F0F0' WHERE id=" . $row_update['id'] . " && colour='#3C0'"); 
     mysql_close($update_result); 
    } 
} 

我該如何解決這個問題?

+0

通過刪除該行。那麼錯誤就會消失。一般來說,不要調用未定義的函數是一個好主意,否則它總是會導致致命錯誤。大概你可以鏈接你想調用的PHP手冊中的函數,這很清楚你想要做什麼? – hakre 2012-01-05 20:58:22

+0

複製errormessage時,或者它沒有將文件複製到它:'createfromformat!= createFromFormat' – KingCrunch 2012-01-05 20:58:58

+0

雖然 – methuselah 2012-01-05 20:59:15

回答

20

DateTime::createFromFormat()在php 5.3中引入。最有可能你有一個更老的。所以 - 安裝php> = 5.3,你就會得到它的工作。

+0

PHP版本5.2.9 - 我在uk2.net服務器上運行它 – methuselah 2012-01-05 21:02:01

+0

運行早期版本的PHP(PHP <5.3)的服務器是否有等效的方法? – Sam 2012-05-18 12:54:48

+0

@Sam:'strtotime',不對等,但可以幫助 – zerkms 2012-05-18 21:25:39

5

您正在運行哪個版本的PHP?根據PHPcreateDateFormat在版本> = 5.3.0中可用。

- 編輯

看起來像你的代碼使用日期時間不正確,在createFromFormat返回一個對象,而不是字符串,但你應該能夠調換日期時間:: createFromFormat()的調用date()調用。

// PHP >= 5.3.0 
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 

// PHP < 5.3.0 
$datetime_lower = date('d/m/Y', $min); 
$datetime_upper = date('d/m/Y', $max); 
$datetime_compare = date('d/m/Y g:i a', $row_update['pDate']); 

在我看來,如果你正在處理時間戳,你可以做比較操作而不必轉換成特定的格式。如果您處理的日期之一不是時間戳格式,則可以執行以下操作:

$timestamp = strtotime($yourFormattedDateTime); 

// Now with everything in ints, you can do your conditional evals 
+0

PHP版本5.2.9 - 我在uk2.net服務器上運行它 – methuselah 2012-01-05 21:03:50

+0

不知道爲什麼他們運行這樣一箇舊版本,你將不得不聯繫他們以獲得他們升級,使用5.2.9的日期/時間操作支持的函數調用,或者找到一個新的主機誰是他們的軟件更新。 – 2012-01-05 21:05:20

+1

你能推薦任何支持的函數調用嗎? – methuselah 2012-01-05 21:08:47

相關問題