<?php
function getYear($jY){
/*
*PHP计算天干地支
*参数为干支时返回结果为1至当前年的所有干支为参数值的公元纪年年份
*参数为4位数字时返回当前年份的干支纪年
*轻松E站 www.Qsyz.net原创程序
*/
$jYears=array();
$thisYear=date('Y');
$animals=array('鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪');
$gZ=array('甲子','乙丑','丙寅','丁卯','戊辰','已巳','庚午','辛未','壬申','癸酉','甲戌','乙亥','丙子','丁丑','戊寅','已卯','庚辰','辛巳','壬午','癸未','甲申','乙酉','丙戌','丁亥','戊子','己丑','庚寅','辛卯','壬辰','癸巳','甲午','乙未','丙申','丁酉','戊戌','已亥','庚子','辛丑','壬寅','癸卯','甲辰','乙巳','丙午','丁未','戊申','已酉','庚戌','辛亥','壬子','癸丑','甲寅','乙卯','丙辰','丁巳','戊午','已未','庚申','辛酉','壬戌','癸亥');
for($i=0,$yr=1924;$i<count($gZ),$yr<1984;$i++,$yr++){//为干支生成年份,1924年为甲子年
$jYears[$gZ[$i]]=$yr;
}
if(is_numeric($jY) && $jY>0){//如果参数是数字将公历年份换算成干支
$jYn=$jY%60;
while($jYn<=$thisYear){
if(array_search($jYn,$jYears)) {
$rs=array_search($jYn,$jYears);
switch(iconv_substr($rs,1,1,"gbk")){//由年支推算生肖,如此编码是utf-8请将gbk改为utf-8
case '子':$aI=0;break;
case '丑':$aI=1;break;
case '寅':$aI=2;break;
case '卯':$aI=3;break;
case '辰':$aI=4;break;
case '巳':$aI=5;break;
case '午':$aI=6;break;
case '未':$aI=7;break;
case '申':$aI=8;break;
case '酉':$aI=9;break;
case '戌':$aI=10;break;
case '亥':$aI=11;
}
return $jY.'年是'.$rs.$animals[$aI].'年';
} else {
$jYn+=60;
}
}
} else if(in_array($jY,$gZ)){//如果参数是干支则转换为公元年份
$sYear=$jYears[$jY];
$yr=1;$sYearStr='';
while($yr<=$thisYear){
if(($sYear-$yr)%60==0){
$sYearStr.=' , '.$yr;
}
$yr++;
}
return '公元1--'.$thisYear.'年中的所有'.$jY.'年年份:'.substr($sYearStr,2);
} else {
return '参数错误';
}
}
echo getYear('2400');//调用函数
?> |