加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:27:16 所属栏目:PHP教程 来源:网络整理
导读:《PHP实现阳历到农历转换的类实例》要点: 本文介绍了PHP实现阳历到农历转换的类实例,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP实现阳历到农历转换的类.供大家参考研究.具体如下: PHP编程 代码如下: ?php //PHP阳历到农历转换的

《PHP实现阳历到农历转换的类实例》要点:
本文介绍了PHP实现阳历到农历转换的类实例,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解PHP实现阳历到农历转换的类.分享给大家供大家参考.具体如下:PHP编程

代码如下:
<?php
//PHP阳历到农历转换的一个类
class Calendar
{
//农历每月的天数
??? var $everyCMonth=array(
??? 0=>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程序设计有所赞助.PHP编程

《PHP实现阳历到农历转换的类实例》是否对您有启发,欢迎查看更多与《PHP实现阳历到农历转换的类实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读