龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php阳历转农历,2016优化版(3)

时间:2017-07-10 12:50来源:网络整理 作者:网络 点击:
分享到:
#星期 $weekday = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); #阳历总天数 至1900年12月21日 $total=11; #阴历总天数 $mtotal=0; ############

#星期 $weekday = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); #阳历总天数 至1900年12月21日 $total=11; #阴历总天数 $mtotal=0;

########################

#获得当日日期 //$today=getdate(); //获取今天的日期 if($nian<1901 || $nian>2020) die("年份出错!"); //$cur_wday=$today["wday"]; //星期中第几天的数字表示 for($y=1901;$y<$nian;$y++) { //计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和 $total+=365; if ($y%4==0) $total++; } switch($yue) { //再加当年的几个月 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($nian%4 == 0 && $yue>2) $total++; //如果当年是闰年还要加一天 $total=$total+$ri-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日 ")."w".$weekday[$cur_wday]." ".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年".$nlmon.$nlday; $nowday=$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年 ".$nlmon.$nlday; return $nowday; } echo nongli('20160807'); //标准8位

```

精彩图集

赞助商链接