+ -
当前位置:首页 → 问答吧 → 根据生日计算年龄、生肖、星座

根据生日计算年龄、生肖、星座

时间:2007-01-28

来源:互联网

该三个功能可能没啥实际的应用价值,大家就留个纪念吧。


星座:我是根据这个时间表写的,该时间表未必准确。

'水瓶座'=>'(1/22-2/21)',   '双鱼座'=>'(2/22-3/21)',

'白羊座'=>'(3/22-4/21)',   '金牛座'=>'(4/22-5/21)',

'双子座'=>'(5/22-6/21)',   '巨蟹座'=>'(6/22-7/21)',

'狮子座'=>'(7/22-8/21)',   '处女座'=>'(8/22-9/21)',

'天秤座'=>'(9/22-10/21)',  '天蝎座'=>'(10/22-11/21)',

'射手座'=>'(11/22-12/21)',  '摩羯座'=>'(12/22-1/21)'

复制PHP内容到剪贴板
PHP代码:
[font=Arial]<?php[/font]

[font=Arial]/**

 * 根据生日中的月份和日期来计算所属星座

 * 

 * @param int $birth_month

 * @param int $birth_date

 * @return string

 */

function get_constellation($birth_month,$birth_date)

{

 //判断的时候,为避免出现1和true的疑惑,或是判断语句始终为真的问题,这里统一处理成字符串形式

 $birth_month = strval($birth_month);

 

 $constellation_name = array(

      '水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座',

      '狮子座','处女座','天秤座','天蝎座)','射手座','摩羯座'

      );

 

 if ($birth_date <= 22)

 {

  if ('1' !== $birth_month)

  {

   $constellation = $constellation_name[$birth_month-2];

  }

  else

  {

   $constellation = $constellation_name[11];

  }

 }

 else

 {

  $constellation = $constellation_name[$birth_month-1];

 }

 

 return $constellation;

}[/font]
 
 
[font=Arial]/**

 * 根据生日中的年份来计算所属生肖

 * 

 * @param int $birth_year

 * @return string

 */

function get_animal($birth_year)

{

 //1900年是子鼠年

 $animal = array(

    '子鼠','丑牛','寅虎','卯兔','辰龙','巳蛇',

    '午马','未羊','申猴','酉鸡','戌狗','亥猪'

    );

 

 $my_animal = ($birth_year-1900)%12;

 return $animal[$my_animal];

}[/font]
 
 
[font=Arial]/**

 * 根据生日来计算年龄

 * 

 * 用Unix时间戳计算是最准确的,但不太好处理1970年之前出生的情况

 * 而且还要考虑闰年的问题,所以就暂时放弃这种方式的开发,保留思想

 * 

 * @param int $birth_year

 * @param int $birth_month

 * @param int $birth_date

 * @return int

 */

function get_age($birth_year,$birth_month,$birth_date)

{

 $now_age = 1; //实际年龄,以出生时为1岁计

 $full_age = 0; //周岁,该变量放着,根据具体情况可以随时修改

 

 $now_year   = date('Y',time());

 $now_date_num  = date('z',time()); //该年份中的第几天

 $birth_date_num = date('z',mktime(0,0,0,$birth_month,$birth_date,$birth_year));

 

 $difference = $now_date_num - $birth_date_num;

 if ($difference > 0)

 {

  $full_age = $now_year - $birth_year;

 }

 else

 {

  $full_age = $now_year - $birth_year - 1;

 }

 

 $now_age = $full_age + 1;

 

 return $now_age;

}[/font]

 
[font=Arial]?>[/font]
[font=Arial]


作者: myc508   发布时间: 2007-01-27

呵呵 不错 学习了

作者: 天之魔神   发布时间: 2007-01-27

很好  ~~  数组计算上很精确了

建议编辑下帖子~~   加上注释  ~~ :)

作者: 小竣   发布时间: 2007-01-28

同楼上

作者: cator   发布时间: 2007-01-28