PHP实现阳历到农历转换的类实例

本文实例讲述了PHP实现阳历到农历转换的类。分享给大家供大家参考。具体如下:

代码如下:
array(8,29,30,7,1), 1=>array(0,8,2), 2=>array(0,9,3), 3=>array(5,10,4), 4=>array(0,1,5), 5=>array(0,2,6), 6=>array(4,3,7), 7=>array(0,4,8), 8=>array(0,5,9), 9=>array(2,6,10), 10=>array(0,11), 11=>array(6,12), 12=>array(0, 13=>array(0, 14=>array(5, 15=>array(0, 16=>array(0, 17=>array(2, 18=>array(0, 19=>array(7, 20=>array(0, 21=>array(0, 22=>array(5, 23=>array(0, 24=>array(0, 25=>array(4, 26=>array(0, 27=>array(0, 28=>array(2, 29=>array(0, 30=>array(6, 31=>array(0, 32=>array(0, 33=>array(5, 34=>array(0, 35=>array(0, 36=>array(3, 37=>array(0, 38=>array(7, 39=>array(0, 40=>array(0, 41=>array(6, 42=>array(0, 43=>array(0, 44=>array(4, 45=>array(0, 46=>array(0, 47=>array(2, 48=>array(0, 49=>array(7, 50=>array(0, 51=>array(0, 52=>array(5, 53=>array(0, 54=>array(0, 55=>array(3, 56=>array(0, 57=>array(8, 58=>array(0, 59=>array(0, 60=>array(6, 61=>array(0, 62=>array(0, 63=>array(4, 64=>array(0, 65=>array(0, 66=>array(3, 67=>array(0, 68=>array(7, 69=>array(0, 70=>array(0, 71=>array(5, 72=>array(0, 73=>array(0, 74=>array(4, 75=>array(0, 76=>array(8, 77=>array(0, 78=>array(0, 79=>array(6, 80=>array(0, 81=>array(0, 82=>array(4, 83=>array(0, 84=>array(10, 85=>array(0, 86=>array(0, 87=>array(6, 88=>array(0, 89=>array(0, 90=>array(5, 91=>array(0, 92=>array(0, 93=>array(3, 94=>array(0, 95=>array(8, 96=>array(0, 97=>array(0, 98=>array(5, 99=>array(0, 100=>array(0, 101=>array(4, 102=>array(0, 103=>array(0, 104=>array(2, 105=>array(0, 106=>array(7, 107=>array(0, 108=>array(0, 109=>array(5, 110=>array(0, 111=>array(0, 112=>array(4, 113=>array(0, 114=>array(9, 115=>array(0, 116=>array(0, 117=>array(6, 118=>array(0, 119=>array(0, 120=>array(4,1) ); //农历天干 var $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); //农历地支 var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)", "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"); //农历月份 var $mmonth=array("闰","正","二","三","四","五","六", "七","八","九","十","十一","十二","月"); var $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十", "十一","十三","十四","十五","十六","十七","十八","十九","二十", "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");//农历日 //赋给初值 //天干地支 var $ten=0; var $twelve=0; function MyPub($cYear,$cMonth,$cDay) { $total=11;//阳历总天数 至1900年12月21日 $mtotal=0;//阴历总天数 for ($y=1901;$y<$cYear;$y++) { $total+=365; if ($y%4==0) $total ++; } //再加当年的几个月 switch ($cMonth){ case 12: $total+=30; case 11: $total+=31; case 10: $total+=30; case 9: $total+=31; case 8: $total+=31; case 7: $total+=30; case 6: $total+=31; case 5: $total+=30; case 4: $total+=31; case 3: $total+=28; case 2: $total+=31; }

//如果当年是闰年还要加一天
if ($cYear%4==0 and $cMonth>2)
{
$totaL++;
}
$total+=$cDay-1;
//用农历的天数累加来判断是否超过阳历的天数
for($j=0;$j<=120;$j++)
{
$i=1;
for($i=1;$i<=13;$i++)
{
$mtotal+=$this->everyCMonth[$j][$i];
if ($mtotal>=$total)
{
$flag=1;
break;
}
}
if ($flag==1)break;
}
return array("m"=>$j,"d"=>$i,"t"=>$total,"n"=>$mtotal);
}
function Cal($Year,$Month,$Day)
{
$Par=$this->MyPub($Year,$Day);

$md=$this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n"]-$Par["t"]);
$week=($Par["t"]+5)%7;
if ($this->everyCMonth[$Par["m"]][0]<>0 and $this->everyCMonth[$Par["m"]][0]<$Par["d"])
{
$mm=$Par["d"]-1;
}else{
$mm=$Par["d"];
}
if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+1 and $this->everyCMonth[$Par["d"]][0]<>0)
{
$cMonth=$this->mmonth[0].$this->mmonth[$mm];//闰月
}else{
$cMonth=$this->mmonth[$mm].$this->mmonth[13];
}
return array("year"=>$this->mten[$this->everyCMonth[$Par["m"]][14]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]],
"month"=>$cMonth,
"day"=>$this->mday[$md],
"week"=>$week);
}
}
/////调用
$test=new Calendar;
$Year=$test->Cal(2004,20);
echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"];
?>

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...