Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5.2.6中的年龄计算_Php_Datediff - Fatal编程技术网

PHP5.2.6中的年龄计算

PHP5.2.6中的年龄计算,php,datediff,Php,Datediff,我在计算保存在数据库中的年龄时遇到了一个问题。我从这个网站的一个用户那里得到了帮助,他给了我正确的输出文件,但我遇到了另一个问题。该解决方案是为较新的php版本而设计的,但我的php版本是5.2.6。我们将非常感谢您对本方法的任何帮助。这是他给我的密码 if(!empty($row11['dob'])){ $birthdate = new DateTime($row11['dob']); $today = new DateTime('to

我在计算保存在数据库中的年龄时遇到了一个问题。我从这个网站的一个用户那里得到了帮助,他给了我正确的输出文件,但我遇到了另一个问题。该解决方案是为较新的php版本而设计的,但我的php版本是5.2.6。我们将非常感谢您对本方法的任何帮助。这是他给我的密码

if(!empty($row11['dob'])){ 
            $birthdate = new DateTime($row11['dob']);
            $today     = new DateTime('today');
            $ag = $birthdate->diff($today)->y;
            $mn = $birthdate->diff($today)->m;
            $dy = $birthdate->diff($today)->d;              
        }else{
            $ag = 0; $mn=0; $dy=0;
        }   
我还附上原始文件,以便您能更好地帮助我。请注意,我正为此使用PHP5.2.6。我们将非常感谢您在这方面提供的任何及时帮助。谢谢


这是到

的链接,也许我能帮上忙。Datetime->diff是在PHP5.3中引入的,所以您需要一种变通方法

这不是最简单的方法,但绝对是一种快速的方法,就是用生日减去当前日期,再除以过去的年数。这看起来像:

$birthdate = new DateTime($row11['dob']);
$today = new DateTime('today');
$year = round(($today->format('U') - $birthdate->format('U')) / (60*60*24*365));

几个月来,情况变得越来越复杂,但从这个例子来看,你似乎不需要比这个更多的细节。如果你想计算这些年,我建议扩展公式。

你不能更新你的PHP吗?那个版本已经9年了!我们正在经营一所慈善学校,有人向我们捐赠了php制作的考试系统。在该系统中,我们打印学生的成绩,我们还要求在成绩卡上以YY-MM-DD格式打印年龄。我们无法接触到开发者,这就是为什么我在这里,希望专业人士或这个社区一定会提供帮助。如果我们知道所有内容的格式,这将对我们有所帮助。数据库中的
dob
单元格是什么格式?您的预期结果是什么?您当前的结果是什么?如果您看到附件中的原始文件,您也可以找到有关详细信息的所有详细信息。dob以DD-MM-YYYY格式保存在数据库中。这是我们的结果卡的输出,可能是对答案的感谢。社区的一名成员也在帮忙。与此同时,我想与大家分享的是,实际上旧代码正在打印我们需要的所有细节,但几个月没有准确打印。一些学生有几个月的负价值观。。。这是旧代码$ag=date('Y')-substr($row11['dob'],6)$mn=日期('m')-substr($row11['dob'],3,2)$dy=日期('d')-substr($row11['dob'],0,2);这个有错误吗?有。如果你的学生出生在10月份,你在5月份登记,你给它一个值
$mn=5-10
,而不是在年龄上加上一年,在他们的生日前还有几个月。