找回密码
 注册

[PHP] PHP计算天干地支和生肖属性

php 发表于 2012/7/30 14:30 | 显示全部楼层 |阅读模式
<?php
/*
PHP计算干支(即天干地支)和生肖,轻松E站原创程序.
www.51-n.com原创程序
功能:计算1900至2099年任意年份的天干地支和生肖
程序编译日期:2012年7月30日
*/
function getGZ($year){
$zhi=array('子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥');
$gan=array('甲','乙','丙','丁','戊','己','庚','辛','壬','癸');
$animals=array('鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪');
        if(is_numeric($year) && $year>=1900 && $year<2100 && strlen($year)==4){
                $lastDigit=substr($year,-1);
                //1900~2100年年干=年份最后一位数-3,结果为负则+10,最后得到的数为几则为第几个值,下同.
                $gI=($lastDigit-3 >0 ? $lastDigit-3 : $lastDigit+10-3)-1;
                //1900~1999年年支=年份最后两位数+1,2000~2099年年支=年份最后两位数+5
                //然后除以12取余数,余数为0时重置为12以免数组索引为负数.;
                $last2Digits=substr($year,-2);
                if($year>=1900 && $year<=1999){
                        $last2Digits+=1;
                } else {
                        $last2Digits+=5;
                }
                $zI=($last2Digits>12 ? ($last2Digits%12==0 ? 12:$last2Digits%12) : $last2Digits%12)-1;
                return $year.'年是'.$gan[$gI].$zhi[$zI].$animals[$zI].'年';
        } else {
                return $year.'不是1900-2099之间的4位整数';
        }
}
echo getGZ('2099');//调用方法
?>
输出:2099年是己未羊年
 楼主| php 发表于 2012/7/30 15:13 | 显示全部楼层
请注意,年份的范围是1900(含)至2100(不含)。
回复

使用道具 举报

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表