2014-07-01 27 views
1

我有2個文件index.php和functions.php。 functions.php中包含了我所有的功能我的index.php中使用,它工作正常,期待一個功能:PHP日期時間:差異不起作用從包括的文件

function diffSecBetweenDate($dateDebut,$dateFin) 
{ 
    $dateTimeDebut = DateTime::createFromFormat('d/m/y à H\hi',$dateDebut); 
    $dateTimeFin = DateTime::createFromFormat('d/m/y à H\hi',$dateFin); 
    $dateDifference = $dateTimeDebut->diff($dateTimeFin); 

    $seconds = $dateDifference->days * 24 * 60 * 60; 
    $seconds += $dateDifference->h *3600; 
    $seconds += $dateDifference->i *60; 
    $seconds += $dateDifference->s ; 
    return $seconds; 
} 

我包括:

include('include/functions.php'); 

如果我的功能是在index.php中正常工作。如果我的功能是在functions.php中我得到這個:

PHP Fatal error: Call to a member function diff() on a non-object in /var/www/acad/include/functions.php on line 235 

所有功能正常工作......

你有什麼想法?

編輯1:

我不知道什麼時候PHP崩潰,但你會發現下面的我的代碼的摘錄:

$dateReset = '20/03/2012 à 12h00'; 
$dateNow = new DateTime(); 
$dateObjectReset = DateTime::createFromFormat('d/m/Y à H\hi',$dateReset); 
$dateObjectReset->format('d/m/y à H\hi'); 

$dateNow = $dateNow->format('d/m/y à H\hi'); 
$dateObjectReset = $dateObjectReset->format('d/m/y à H\hi'); 

$referenceT = diffSecBetweenDate($dateObjectReset, $dateNow); 

我用VIM所以當我提出我的功能我做的:狗屎+ v => d => ctrl-w => p 所以我不寫任何東西,也不能重命名一些東西! ^^

編輯2:

錯誤是關於不同的編碼。

最好的問候,

+1

這是非常奇特的。這真的是你打電話的功能嗎?你可以提交一個測試用例嗎? –

+0

我剛剛創建'functions.php'和'index.php',一切工作正常。你能檢查一下每條路是好嗎?和功能的名稱,你打電話正確的功能? – MrCkobe

回答

0

我發現錯誤...問題是「à 「具有不同的編碼:

createFromFormat('d/m/y à H\hi',$dateDebut) 

的index.php編碼= UTF-8 function.php編碼= latin9

如果編碼是相等的,它就起作用!

-1

你傳遞一個DateTime你的功能,你想在日期時間來改變它。我認爲這是你的問題。您可以刪除這兩行:

$dateTimeDebut = DateTime::createFromFormat('d/m/y à H\hi',$dateDebut); 
$dateTimeFin = DateTime::createFromFormat('d/m/y à H\hi',$dateFin); 

並使用$ dateDebut和$ dateFin insted。

0

這種情況的主要原因是可變的說例如$dateTimeDebut不是DateTime對象

它應該像某些東西一樣

$dateTimeDebut= new DateTime();