求一段计算当前年龄的代码【PHP】!

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:13:43
求一段PHP代码,已知出生的年、月、日,计算得出当前的年龄,显示为现在“几岁几个月几天”
非常精确是有些困难,不需要考虑闰月,比如2008-2-10出生,到2009-7-12,至少应该显示为:“1岁5个月零3天”,可以考虑把年-月-日拆开来计算,思路:
当前年份-出生年份,如果为负,则提示出错。
|
年龄=当前年份-出生年份

当前月份-出生月份<0,则年龄结果-1,月份=当前月份-出生月份+12
|
月份=当前月份-出生月份

日期同月份原理一样,只是这里比较头痛,日期有28、29、30、31天4种不同的月份,如果不考虑进去,比如2月生日的,在3月计算的结果会相差很多天,头痛了,大家帮忙!!

楼上这位如果真要求个大概的话,这样算就复杂了,直接用date('Ymd')-日期(yyyymmdd)拿起来除就可以了。
如果是要求精确的,其实楼主的思路已经很好了,你把它写完善一点就行了。
先日-日,差的话找月借,然后月减月,差的话找年借,最后年减年,恩,差不多就这个思路了。

写了一个,不考虑系统占用,只考虑功能的实现:

<?php
$you = 19000228;
$now = date('Ymd');
//$now = 19000501; //这一行是用来测试的
//分解当前日期为年月日
$y = (int)($now/10000);
$m = (int)(($now%10000)/100);
$d = $now%100;
//分解生日为年月日
$yy = (int)($you/10000);
$ym = (int)(($you%10000)/100);
$yd = $you%100;
//特殊日期计算
if($years%4==0 || ($years%100==0&&$years%400==0)){
$special=29;
}else{
$special=28;
}
//各月的上个月的天数
switch($m){
case 2:$add=31;
case 3:$add=31;
case 6:$add=31;
case 8:$add=31;
case 9:$add=31;
case 11:$add=31;
case 1:$add=31;
case 5:$add=30;
case 7:$add=30;
case 10:$add=30;
case 12:$add=30;
case 3:$add=$special;
}
if($d<$yd){
$d+=$add;