是什么导致“未定义的函数”date_diff?

时间:2012-12-11 02:18:33

标签: php date

我有这个脚本,我在我的PHP中使用它将用户的出生日期转换为他们的年龄。 它在我的本地主机上工作正常,但当我将其上传到服务器时,页面出现此错误:

  

致命错误:在第19行的/home/content/31/9118831/html/projects/mark.ptb/PTB1/includes/mod_home/mod_platinum.php中调用未定义的函数date_diff()

这是我的代码,我猜我没有定义函数,虽然我无法理解为什么它在我的localhost上工作正常呢?

<?php
 $dob = $platinum['dob'];

function age_from_dob($dob) {


       $age = date_diff(date_create($dob), date_create('now'))->y;  
       return $age;
}

?>

<?

        $platinum_set = get_platinum_users();
        while ($platinum = mysql_fetch_array($platinum_set)) {
        $age = age_from_dob($platinum['dob']);
             echo "
            <div class=\"platinumcase\">
            <a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52> ".$age." Years Old<br/><br/>From {$platinum['location']}</h52>

            </div>";
        }
    ?>

4 个答案:

答案 0 :(得分:1)

date_diff()函数是PHP&gt; = 5.3的一部分。如果它在服务器上不存在但在本地计算机上存在,那么当您使用PHP&gt; = 5.3时,服务器正在使用旧版本的PHP。

始终使用与部署环境相同的PHP版本进行开发是一个好主意。要找出您正在使用的PHP版本,您可以echo PHP_VERSION常量。

答案 1 :(得分:1)

根据php manual,date_diff仅在PHP 5.3 +

中可用

服务器上的PHP版本是否足够?您可以使用phpinfo()命令确定服务器上正在使用的PHP版本。

答案 2 :(得分:0)

你这样做有点不对劲:)

$date = new DateTime($dob);
$diff = $date->diff('now')->y;

确保捕获错误,因为用户指定的$dob字符串可能并不总是会产生有效日期。

答案 3 :(得分:0)

请使用日期对象而不是date_diff()函数。您可以使用$ date-&gt; diff()函数来计算日期差异 例如:

$ fromdate = new DateTime($ todate); $ diff = $ fromdate-&gt; diff('now') - &gt; y;