1

我有这个脚本,我在我的 php 中使用它来将用户的出生日期转换为他们的年龄。它在我的本地主机上运行良好,但是当我将其上传到服务器时,页面出现此错误:

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

这是我的代码,我猜我还没有定义函数,虽然我不明白为什么它会在我的本地主机上正常工作?

<?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

4 回答 4

1

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

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

于 2012-12-11T02:20:46.413 回答
1

根据 php手册,date_diff 仅在 PHP 5.3+ 中可用

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

于 2012-12-11T02:22:32.477 回答
0

你做的有点不对:)

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

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

于 2012-12-11T02:21:17.850 回答
0

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

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

于 2018-04-03T07:36:35.553 回答