php下实现农历日历的代码
发布时间:2020-12-15 00:53:12 所属栏目:C语言 来源:网络整理
导读:复制代码 代码如下: php农历日历 ? ########################################### #作者:沈潋(Snbsp;Lab)# #E-mail:shenlian@hotmail.com# #web:http://www.focus-2000.com# ## #版权声明:# #作者开放版权# #允许无条件地使用本文件的全部或部分# #可作任何
复制代码 代码如下: php农历日历 <? ########################################### #作者: 沈潋(S&S Lab) # #E-mail:shenlian@hotmail.com # #web: http://www.focus-2000.com # # # #版权声明: # #作者开放版权 # #允许无条件地使用本文件的全部或部分 # #可作任何修改或增补 # #如果您使用了本文件,请给作者写一封E-mail # #如有问题欢迎同作者联系 # #谢谢您的关注! # ########################################### /* *修改:小许 *mail: san@xfocus.org *web : http://www.xfocus.org * *说实在的,我对古历可以说一窍不通,下面这个数组还是不理解 可是作者的信箱好像不通 *基本上是依样画葫芦,所以出现错误,见笑见笑,呵呵 */ #农历每月的天数 $everymonth=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) ); ############################## #农历天干 $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); #农历地支 $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)", "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"); #农历月份 $mmonth=array("闰","正","二","三","四","五","六", "七","八","九","十","十一","十二","月"); #农历日 $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十", "十一","十三","十四","十五","十六","十七","十八","十九","二十", "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"); ############################## #星期 $weekday = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); #阳历总天数 至1900年12月21日 $total=11; #阴历总天数 $mtotal=0; ############################## #获得当日日期 $today=getdate(); if($today["year"]<1901 || $today["year"]>2020) die("年份出错!"); $cur_wday=$today["wday"]; for($y=1901;$y<$today["year"];$y++) { //计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和 $total+=365; if ($y%4==0) $total++; } switch($today["mon"]) { //再加当年的几个月 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($today["year"]%4 == 0 && $today["mon"]>2) $total++; //如果当年是闰年还要加一天 $total=$total+$today["mday"]-1; //加当月的天数 $flag1=0; //判断跳出循环的条件 $j=0; while ($j<=120){ //用农历的天数累加来判断是否超过阳历的天数 $i=1; while ($i<=13){ $mtotal+=$everymonth[$j][$i]; if ($mtotal>=$total){ $flag1=1; break; } $i++; } if ($flag1==1) break; $j++; } if($everymonth[$j][0]<>0 and $everymonth[$j][0]<$i){ //原来错在这里,对闰月没有修补 $mm=$i-1; } else{ $mm=$i; } if($i==$everymonth[$j][0]+1 and $everymonth[$j][0]<>0) { $nlmon=$mmonth[0].$mmonth[$mm];#闰月 } else { $nlmon=$mmonth[$mm].$mmonth[13]; } #计算所求月份1号的农历日期 $md=$everymonth[$j][$i]-($mtotal-$total); if($md > $everymonth[$j][$i]) $md-=$everymonth[$j][$i]; $nlday=$mday[$md]; $nowday=date("Y年n月j日 ").$weekday[$cur_wday]."<br>".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年".$nlmon.$nlday; echo "<font color=#3333ff>$nowday</font>"; ?> 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |