我有2个文件index.php和functions.php。 Functions.php包含我在index.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所以当我移动我的功能时我会这样做:shit + v => d => ctrl-w => p 所以我不写任何东西,不能重命名! ^^
编辑2:
错误是关于不同的编码。
致以最诚挚的问候,
答案 0 :(得分:0)
主要原因是变量说示例$dateTimeDebut
不是DateTime
对象
它应该类似于
之类的东西$dateTimeDebut= new DateTime();
答案 1 :(得分:0)
我发现了错误......问题是“à”使用不同的编码:
createFromFormat('d/m/y à H\hi',$dateDebut)
index.php encoding = utf-8 function.php encoding = latin9
如果编码相同,它就可以了!
答案 2 :(得分:-1)
您将DateTime传递给您的函数,并且您希望在DateTime中对其进行转换。我认为这是你的问题。你可以删除这两行:
$dateTimeDebut = DateTime::createFromFormat('d/m/y à H\hi',$dateDebut);
$dateTimeFin = DateTime::createFromFormat('d/m/y à H\hi',$dateFin);
使用$ dateDebut和$ dateFin insted。