本文实例讲述了PHP编程实现阳历转换为阴历的方法。分享给大家供大家参考,具体如下:
php类
<"$month"]; } /** * 获取阴历月份的天数 * @param year 阴历-年 * @param month 阴历-月,从一月开始 */ public function getLunarMonthDays($year,$month) { $monthData = $this->getLunarMonths($year); return $monthData[$month-1]; } /** * 获取阴历每月的天数的数组 * @param year */ public function getLunarMonths($year) { $yearData = $this->lunarInfo[$year - $this->MIN_YEAR]; $leapMonth = $yearData[0]; $bit = decbin($yearData[3]); for ($i = 0; $i < strlen($bit);$i ++) $bitArray[$i] = substr($bit, $i, 1); for($k=0,$klen=16-count($bitArray);$k<$klen;$k++) array_unshift($bitArray, '0'); $bitArray = array_slice($bitArray,0,($leapMonth==0"二十"; else if($num>20&&$num<30) $res = "廿".$dateHash[$num-20]; else if($num==30) $res = "三十"; } return $res; } /** * 节气通用算法 */ public function getJieQi($_year,$month,$day) { $year = substr($_year,-2)+0; $coefficient = array( array(5.4055,2019,-1),//小寒 array(20.12,2082,1),//大寒 array(3.87),//立春 array(18.74,2026,-1),//雨水 array(5.63),//惊蛰 array(20.646,2084,1),//春分 array(4.81),//清明 array(20.1),//谷雨 array(5.52,1911,1),//立夏 array(21.04,2008,1),//小满 array(5.678,1902,1),//芒种 array(21.37,1928,1),//夏至 array(7.108,2016,1),//小暑 array(22.83,1922,1),//大暑 array(7.5,2002,1),//立秋 array(23.13),//处暑 array(7.646,1927,1),//白露 array(23.042,1942,1),//秋分 array(8.318),//寒露 array(23.438,2089,1),//霜降 array(7.438,2089,1),//立冬 array(22.36,1978,1),//小雪 array(7.18,1954,1),//大雪 array(21.94,2021,-1)//冬至 ); $term_name = array( "小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨", "立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑", "白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"); $idx1 = ($month-1)*2; $_leap_value = floor(($year-1)/4); $day1 = floor($year*0.2422+$coefficient[$idx1][0])-$_leap_value; if(isset($coefficient[$idx1][1])&&$coefficient[$idx1][1]==$_year) $day1 += $coefficient[$idx1][2]; $day2 = floor($year*0.2422+$coefficient[$idx1+1][0])-$_leap_value; if(isset($coefficient[$idx1+1][1])&&$coefficient[$idx1+1][1]==$_year) $day1 += $coefficient[$idx1+1][2]; if($day==$day1) return $term_name[$idx1]; if($day==$day2) return $term_name[$idx1+1]; return ''; } /** * 获取节日:特殊的节日只能修改此函数来计算 */ public function getFestival($today, $nl_info = false,$config = 1) { if($config == 1) { $arr_lunar=array('01-01'=>'春节','01-15'=>'元宵节','02-02'=>'二月二','05-05'=>'端午节','07-07'=>'七夕节','08-15'=>'中秋节','09-09'=>'重阳节','12-08'=>'腊八节','12-23'=>'小年'); $arr_solar=array('01-01'=>'元旦','02-14'=>'情人节','03-12'=>'植树节','04-01'=>'愚人节','05-01'=>'劳动节','06-01'=>'儿童节','10-01'=>'国庆节','10-31'=>'万圣节','12-24'=>'平安夜','12-25'=>'圣诞节'); }//需要不同节日的,用不同的$config,然后配置$arr_lunar和$arr_solar $festivals = array(); list($y,$m,$d) = explode('-',$today); if(!$nl_info) $nl_info = $this->convertSolarToLunar($y,intval($m),intval($d)); if($nl_info[7]>0&&$nl_info[7]<$nl_info[4]) $nl_info[4]-=1; $md_lunar = substr('0'.$nl_info[4],-2).'-'.substr('0'.$nl_info[5],-2); $md_solar=substr_replace($today,'',0,5); isset($arr_lunar[$md_lunar])"w",strtotime($today)); //0-6 if($m==5&&($d>7)&&($d<15)&&($glweek==0))array_push($festivals, "母亲节"); if($m==6&&($d>14)&&($d<22)&&($glweek==0))array_push($festivals,"父亲节"); $jieqi = $this->getJieQi($y,$m,$d); if($jieqi)array_push($festivals,$jieqi); return implode('/',$festivals); } }
调用方法:
$lunar = new Lunar(); $month = $lunar->convertSolarToLunar(date('Y'),date('m'),date('d')); print_r($month);
运行结果:
Array ( [0] => 2017 [1] => 闰六月 [2] => 十七 [3] => 丁酉 [4] => 7 [5] => 17 [6] => 鸡 [7] => 6 )
PS:这里再为大家推荐几款日历相关在线工具供大家参考:
网页万年历日历:
http://tools.jb51.net/bianmin/webwannianli
在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli
在线万年历日历:
http://tools.jb51.net/bianmin/wannianli
在线万年历黄历flash版:
http://tools.jb51.net/bianmin/flashwnl
另外,本站历史上的今天也有相似的农历日期显示功能:
http://tools.jb51.net/bianmin/lishi
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》及《php字符串(string)用法总结》
希望本文所述对大家PHP程序设计有所帮助。
标签:
PHP,阳历,阴历
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“PHP编程实现阳历转换为阴历的方法实例”评论...