<? 
 ########################################### 
 #作者: 沈潋(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 
 * 
 *说实在的,我对古历可以说一窍不通,下面这个数组还是不理解 可是作者的信箱好像不通  
www.phperz.com  *基本上是依样画葫芦,所以出现错误,见笑见笑,呵呵 
 */ 
 #农历每月的天数 
 $everymonth=array( 
 0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 
 1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 
 2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 
 3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 
 4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 
 5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6), 
 6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 
 7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8), 
 8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 
 9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10), 
 10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 
 11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 
 12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1),  
php程序员站
  13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 
 14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 
 15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 
 16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 
 17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 
 18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 
 19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 
 20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 
 21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 
 22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 
 23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 
 24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1), 
 25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 
 26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3), 
 27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4),  
www.phperz.com
  28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5), 
 29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 
 30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 
 31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8), 
 32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 
 33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10), 
 34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 
 35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12), 
 36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 
 37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 
 38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 
 39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 
 40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5), 
 41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 
 42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7),  
www.phperz.com  43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 
 44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9), 
 45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 
 46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11), 
 47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 
 48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1), 
 49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 
 50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 
 51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 
 52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 
 53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6), 
 54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 
 55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8), 
 56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 
 57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10),  
phperz.com
  58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 
 59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12), 
 60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 
 61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2), 
 62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 
 63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 
 64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5), 
 65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 
 66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7), 
 67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 
 68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9), 
 69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 
 70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11), 
 71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 
 72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1),  
php程序员站  73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 
 74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 
 75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 
 76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 
 77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 
 78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 
 79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 
 80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 
 81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 
 82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 
 83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 
 84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 
 85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 
 86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3), 
 87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4),  
phperz~com
  88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5), 
 89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 
 90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 
 91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 
 92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 
 93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 
 94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 
 95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 
 96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1), 
 97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 
 98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3), 
 99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 
 100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5), 
 101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 
 102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7),  
phperz~com
  103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 
 104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 
 105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10), 
 106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 
 107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 
 108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 
 109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 
 110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 
 111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 
 112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 
 113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 
 114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 
 115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 
 116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9), 
 117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10),  
php程序员站
  118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11), 
 119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 
 120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1) 
 ); 
############################## 
 #农历天干 
 $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); 
 #农历地支 
 $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)", 
 "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"); 
 #农历月份 
 $mmonth=array("闰","正","二","三","四","五","六", 
 "七","八","九","十","十一","十二","月");  
phperz.com
  #农历日 
 $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十", 
 "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十", 
 "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"); 
############################## 
 #星期 
 $weekday = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); 
 #阳历总天数 至1900年12月21日 
 $total=11; 
 #阴历总天数 
 $mtotal=0; 
############################## 
 #获得当日日期 
 $today=getdate(); 
 if($today["year"]<1901 || $today["year"]>2020) die("年份出错!");  
php程序员之家
  $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;     //判断跳出循环的条件  
phperz~com
  $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;  
www~phperz~com
  echo "<font color=#3333ff>$nowday</font>"; 
?>