属相对应年份php,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

$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');//调用函数

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值