跳至正文

根据生日计算周岁、生肖、星座

  • 后端
/**
 * 根据出生日期计算 年龄/生肖/星座
 * @param $birth 日期格式的年月日,例:'1999-11-15'
 * @param $symbol 用什么符号分割,例:'-'
 * @return $data 返回数据
 */
function birthday($timestamp, $symbol = '-')
{
    $birthday = date("Y-m-d", $timestamp);           // 时间戳转换标准格式
    list($birth_year, $birth_month, $birth_day) = explode($symbol, $birthday);  // 把数组中的值赋给变量

    // 计算年龄
    $now_month = date('n');     // 当前月份,不带前导0
    $now_day = date('j');       // 当前月的第几天,不带前导0
    $age = date('Y') - $birth_year - 1;
    if ($now_month > $birth_month || $now_month == $birth_month && $now_day >= $birth_day) {
        $age++;
    }
    $data['age'] = $age;    // 年龄

    //计算生肖
    $animals = array(
        '鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪'
    );
    $key = ($birth_year - 1900) % 12;
    $data['animal'] = $animals[$key]; // 生肖

    //计算星座
    $starSign_name = array(
        '水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座'
    );
    if ($birth_day <= 22) {
        if ('1' !== $birth_month) {
            $starSign = $starSign_name[$birth_month - 2];
        } else {
            $starSign = $starSign_name[11];
        }
    } else {
        $starSign = $starSign_name[$birth_month - 1];
    }
    $data['starSign'] = $starSign;    // 星座
    return $data;
}