本文实例讲述了php实现的农历算法。分享给大家供大家参考。具体如下:
<"" || $month == "" || ($year < 1970 or $year > 2020)) return ''; //超出这个范围不计算 // 计算到所求日期阳历的总天数-自1900年12月21日始 for ($y = 1970; $y < $year;$y++) {// 先算年的和 $total += 365; if ($y % 4 == 0) $total ++; } // 再加当年的几个月 $total += gmdate("z", gmmktime(0, 0, 0, $month, 1, $year)); // 用农历的天数累加来判断是否超过阳历的天数 $flag1 = 0; //判断跳出循环的条件 $lcj = 0; while ($lcj <= 120) { $lci = 1; while ($lci <= 13) { @$mtotal += $everymonth[$lcj][$lci]; if ($mtotal >= $total) { $flag1 = 1; break; } $lci++; } if ($flag1 == 1) break; $lcj++; } // 由上,得到的 $lci 为当前农历月, $lcj 为当前农历年 // 计算所求月份1号的农历日期 $fisrtdaylunar = $everymonth[$lcj][$lci] - ($mtotal - $total); $results['year'] = $mten[$everymonth[$lcj][14]] . $mtwelve[$everymonth[$lcj][15]]; //当前是什么年 $daysthismonth = gmdate("t", gmmktime(0, 0, 0, $month, 1, $year)); //当前月共几天 $op = 1; for ($i = 1; $i <= $daysthismonth; $i++) { $possiblelunarday = $fisrtdaylunar + $op-1; //理论上叠加后的农历日 if ($possiblelunarday <= $everymonth[$lcj][$lci]) { // 在本月的天数范畴内 $results[$i] = $mday[$possiblelunarday]; $op += 1; } else { // 不在本月的天数范畴内 $results[$i] = $mday[1]; //退回到1日 $fisrtdaylunar = 1; $op = 2; $curmonthnum = ($everymonth[$lcj][0] != 0) "未知", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"), 'dizhi' => array("未知", "子年(鼠)", "丑年(牛)", "寅年(虎)", "卯年(兔)", "辰年(龙)", "巳年(蛇)", "午年(马)", "未年(羊)", "申年(猴)", "酉年(鸡)", "戌年(狗)", "亥年(猪)"), 'month' => array("闰", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "月"), 'day' => array("未知", "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十") ); print_r(lunarcalendar(8,2015));
运行结果如下:
Array ( [year] => 乙未年(羊) [1] => 十七 [2] => 十八 [3] => 十九 [4] => 二十 [5] => 廿一 [6] => 廿二 [7] => 廿三 [8] => 廿四 [9] => 廿五 [10] => 廿六 [11] => 廿七 [12] => 廿八 [13] => 廿九 [14] => 七月 [15] => 初二 [16] => 初三 [17] => 初四 [18] => 初五 [19] => 初六 [20] => 初七 [21] => 初八 [22] => 初九 [23] => 初十 [24] => 十一 [25] => 十二 [26] => 十三 [27] => 十四 [28] => 十五 [29] => 十六 [30] => 十七 [31] => 十八 )
希望本文所述对大家的php程序设计有所帮助。
标签:
php,农历算法
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“php实现的农历算法实例”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。