share一下贝贝成长进度的php代码

主要功能是根据贝贝的出生日期来显示贝贝现在多大了,实时显示贝贝的成长。
用当前时间减去出生的日期,但是可以显示出来几岁,几个月,和几天。
天的算法有点问题,没有考虑到大小月和2月份。

function getDays() {
	putenv("TZ=Asia/Chongqing");
	$by = 2006;
	$bm = 7;
	$bd = 7;
	$rday="";

	$today = getdate();
	$by = $today[year] - $by;
	$bm = $today[mon] - $bm;
	$bd = $today[mday] - $bd;
	if ($bd < 0) {
		$bd = 30 + $bd;
		$bm--;
	}
	if ($bm < 0) {
		$bm = 12 + $bm;
		$by--;
	}
	#print $by."-".$bm."-".$bd;
	if ($by > 0) {
		$rday = $by . "岁";
	}
	if ($bm == 0&&$bd == 0){
		$rday .="生日";
	}else{
		if ($bm == 0){
			$rday.="零".$bd."天";
		}elseif ($bd == 0){
			$rday.=$bm."个月整";
		}else{
			$rday.=$bm."个月".$bd."天";
		}
	}
	return $rday;
}

 

用的时候直接

<?php echo getDays();?>

就可以了
空下来再完善以下,再写一个js的版本。
有bug请拍砖,有好的写法请留言。
您可以免费用,但是请留个到本页的链接。谢谢

share一下贝贝成长进度的php代码》有9个想法

  1. fredfsh

    Only days should be modified as (C code):

    if (bd < 0) {
    –bm;
    if (m == 1 || m == 2 || m == 4 || m == 6 || m == 8 || m == 9 || m == 11) {
    bd += 31; // 31 days in Jan, Mar, May, July, Aug, Oct
    } else if (m == 5 || m == 7 || m == 10 || m == 12) {
    bd += 30; // 30 days in Apr, June, Sept, Nov
    } else { // m == 3, Feb
    if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
    bd += 29; // leap year
    } else {
    bd += 28;
    }
    }
    }

    回复
  2. Pingback引用通告: 清风掠影部落阁 » 时间进度代码

  3. 贝贝爸 文章作者

    把每个人的生日存在数据库里。改上述函数,传进去生日,然后拆成
    $by = 2006;
    $bm = 7;
    $bd = 7;
    3个变量,返回结果。

    回复
  4. 大树

    那怎么设置多用户呢????就是针对多个人。。。

    然后可以储存在数据库的MYSQL

    回复

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据