php获取农历、节日、节气_php节气 下载

*/
header(“Content-Type:text/html;charset=utf-8”);
class Lunar
{
var $MIN_YEAR = 1891;
var $MAX_YEAR = 2100;
var $lunarInfo = array(
array(0,2,9,21936),array(6,1,30,9656),array(0,2,17,9584),array(0,2,6,21168),array(5,1,26,43344),array(0,2,13,59728),
array(0,2,2,27296),array(3,1,22,44368),array(0,2,10,43856),array(8,1,30,19304),array(0,2,19,19168),array(0,2,8,42352),
array(5,1,29,21096),array(0,2,16,53856),array(0,2,4,55632),array(4,1,25,27304),array(0,2,13,22176),array(0,2,2,39632),
array(2,1,22,19176),array(0,2,10,19168),array(6,1,30,42200),array(0,2,18,42192),array(0,2,6,53840),array(5,1,26,54568),
array(0,2,14,46400),array(0,2,3,54944),array(2,1,23,38608),array(0,2,11,38320),array(7,2,1,18872),array(0,2,20,18800),
array(0,2,8,42160),array(5,1,28,45656),array(0,2,16,27216),array(0,2,5,27968),array(4,1,24,44456),array(0,2,13,11104),
array(0,2,2,38256),array(2,1,23,18808),array(0,2,10,18800),array(6,1,30,25776),array(0,2,17,54432),array(0,2,6,59984),
array(5,1,26,27976),array(0,2,14,23248),array(0,2,4,11104),array(3,1,24,37744),array(0,2,11,37600),array(7,1,31,51560),
array(0,2,19,51536),array(0,2,8,54432),array(6,1,27,55888),array(0,2,15,46416),array(0,2,5,22176),array(4,1,25,43736),
array(0,2,13,9680),array(0,2,2,37584),array(2,1,22,51544),array(0,2,10,43344),array(7,1,29,46248),array(0,2,17,27808),
array(0,2,6,46416),array(5,1,27,21928),array(0,2,14,19872),array(0,2,3,42416),array(3,1,24,21176),array(0,2,12,21168),
array(8,1,31,43344),array(0,2,18,59728),array(0,2,8,27296),array(6,1,28,44368),array(0,2,15,43856),array(0,2,5,19296),
array(4,1,25,42352),array(0,2,13,42352),array(0,2,2,21088),array(3,1,21,59696),array(0,2,9,55632),array(7,1,30,23208),
array(0,2,17,22176),array(0,2,6,38608),array(5,1,27,19176),array(0,2,15,19152),array(0,2,3,42192),array(4,1,23,53864),
array(0,2,11,53840),array(8,1,31,54568),array(0,2,18,46400),array(0,2,7,46752),array(6,1,28,38608),array(0,2,16,38320),
array(0,2,5,18864),array(4,1,25,42168),array(0,2,13,42160),array(10,2,2,45656),array(0,2,20,27216),array(0,2,9,27968),
array(6,1,29,44448),array(0,2,17,43872),array(0,2,6,38256),array(5,1,27,18808),array(0,2,15,18800),array(0,2,4,25776),
array(3,1,23,27216),array(0,2,10,59984),array(8,1,31,27432),array(0,2,19,23232),array(0,2,7,43872),array(5,1,28,37736),
array(0,2,16,37600),array(0,2,5,51552),array(4,1,24,54440),array(0,2,12,54432),array(0,2,1,55888),array(2,1,22,23208),
array(0,2,9,22176),array(7,1,29,43736),array(0,2,18,9680),array(0,2,7,37584),array(5,1,26,51544),array(0,2,14,43344),
array(0,2,3,46240),array(4,1,23,46416),array(0,2,10,44368),array(9,1,31,21928),array(0,2,19,19360),array(0,2,8,42416),
array(6,1,28,21176),array(0,2,16,21168),array(0,2,5,43312),array(4,1,25,29864),array(0,2,12,27296),array(0,2,1,44368),
array(2,1,22,19880),array(0,2,10,19296),array(6,1,29,42352),array(0,2,17,42208),array(0,2,6,53856),array(5,1,26,59696),
array(0,2,13,54576),array(0,2,3,23200),array(3,1,23,27472),array(0,2,11,38608),array(11,1,31,19176),array(0,2,19,19152),
array(0,2,8,42192),array(6,1,28,53848),array(0,2,15,53840),array(0,2,4,54560),array(5,1,24,55968),array(0,2,12,46496),
array(0,2,1,22224),array(2,1,22,19160),array(0,2,10,18864),array(7,1,30,42168),array(0,2,17,42160),array(0,2,6,43600),
array(5,1,26,46376),array(0,2,14,27936),array(0,2,2,44448),array(3,1,23,21936),array(0,2,11,37744),array(8,2,1,18808),
array(0,2,19,18800),array(0,2,8,25776),array(6,1,28,27216),array(0,2,15,59984),array(0,2,4,27424),array(4,1,24,43872),
array(0,2,12,43744),array(0,2,2,37600),array(3,1,21,51568),array(0,2,9,51552),array(7,1,29,54440),array(0,2,17,54432),
array(0,2,5,55888),array(5,1,26,23208),array(0,2,14,22176),array(0,2,3,42704),array(4,1,23,21224),array(0,2,11,21200),
array(8,1,31,43352),array(0,2,19,43344),array(0,2,7,46240),array(6,1,27,46416),array(0,2,15,44368),array(0,2,5,21920),
array(4,1,24,42448),array(0,2,12,42416),array(0,2,2,21168),array(3,1,22,43320),array(0,2,9,26928),array(7,1,29,29336),
array(0,2,17,27296),array(0,2,6,44368),array(5,1,26,19880),array(0,2,14,19296),array(0,2,3,42352),array(4,1,24,21104),
array(0,2,10,53856),array(8,1,30,59696),array(0,2,18,54560),array(0,2,7,55968),array(6,1,27,27472),array(0,2,15,22224),
array(0,2,5,19168),array(4,1,25,42216),array(0,2,12,42192),array(0,2,1,53584),array(2,1,21,55592),array(0,2,9,54560)
);

/\*\* 

* 将阳历转换为阴历
* @param year 公历-年
* @param month 公历-月
* @param date 公历-日
*/
function convertSolarToLunar( y e a r , year, year,month,$date)
{
//debugger;
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year- t h i s − > M I N Y E A R ] ; i f ( this->MIN_YEAR]; if( this>MINYEAR];if(year==KaTeX parse error: Expected 'EOF', got '&' at position 15: this->MIN_YEAR&̲&month<=2&&$date<=9) return array(1891,‘正月’,‘初一’,‘辛卯’,1,1,‘兔’);
return t h i s − > g e t L u n a r B y B e t w e e n ( this->getLunarByBetween( this>getLunarByBetween(year, t h i s − > g e t D a y s B e t w e e n S o l a r ( this->getDaysBetweenSolar( this>getDaysBetweenSolar(year, m o n t h , month, month,date, y e a r D a t a [ 1 ] , yearData[1], yearData[1],yearData[2]));
}

function convertSolarMonthToLunar($year,$month)   

{
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year- t h i s − > M I N Y E A R ] ; i f ( this->MIN_YEAR]; if( this>MINYEAR];if(year==KaTeX parse error: Expected 'EOF', got '&' at position 15: this->MIN_YEAR&̲&month<=2&&$date<=9) return array(1891,‘正月’,‘初一’,‘辛卯’,1,1,‘兔’);
$month_days_ary = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$dd = m o n t h d a y s a r y [ month_days_ary[ monthdaysary[month];
if( t h i s − > i s L e a p Y e a r ( this->isLeapYear( this>isLeapYear(year) && $month == 2) $dd ;
l u n a r a r y = a r r a y ( ) ; f o r ( lunar_ary = array(); for ( lunarary=array();for(i = 1; $i < $dd; $i )
{
$array = t h i s − > g e t L u n a r B y B e t w e e n ( this->getLunarByBetween( this>getLunarByBetween(year, t h i s − > g e t D a y s B e t w e e n S o l a r ( this->getDaysBetweenSolar( this>getDaysBetweenSolar(year, $month, $i, $yearData[1], $yearData[2]));
$array[] = $year . ‘-’ . $month . ‘-’ . $i;
l u n a r a r y [ lunar_ary[ lunarary[i] = $array;
}
return $lunar_ary;
}

/\*\* 

* 将阴历转换为阳历
* @param year 阴历-年
* @param month 阴历-月,闰月处理:例如如果当年闰五月,那么第二个五月就传六月,相当于阴历有13个月,只是有的时候第13个月的天数为0
* @param date 阴历-日
*/
function convertLunarToSolar( y e a r , year, year,month,$date)
{
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year-$this->MIN_YEAR];
$between = t h i s − > g e t D a y s B e t w e e n L u n a r ( this->getDaysBetweenLunar( this>getDaysBetweenLunar(year, m o n t h , month, month,date);
r e s = m k t i m e ( 0 , 0 , 0 , res = mktime(0,0,0, res=mktime(0,0,0,yearData[1], y e a r D a t a [ 2 ] , yearData[2], yearData[2],year);
$res = date(‘Y-m-d’, $res $between*24*60*60);
$day = explode(‘-’, $res);
$year = $day[0];
$month= $day[1];
$day = d a y [ 2 ] ; r e t u r n a r r a y ( day[2]; return array( day[2];returnarray(year, $month, $day);
}

/\*\* 

* 判断是否是闰年
* @param year
*/
function isLeapYear(KaTeX parse error: Expected '}', got 'EOF' at end of input: … return ((year%40 && y e a r 0 ! = 0 ) ∣ ∣ ( year0 !=0) || ( year0!=0)∣∣(year@00));
}

/\*\* 

* 获取干支纪年
* @param year
*/
function getLunarYearName($year)
{
$sky = array(‘庚’,‘辛’,‘壬’,‘癸’,‘甲’,‘乙’,‘丙’,‘丁’,‘戊’,‘己’);
$earth = array(‘申’,‘酉’,‘戌’,‘亥’,‘子’,‘丑’,‘寅’,‘卯’,‘辰’,‘巳’,‘午’,‘未’);
$year = $year.‘’;
return s k y [ sky[ sky[year{3}]. e a r t h [ earth[ earth[year];
}

/\*\* 

* 根据阴历年获取生肖
* @param year 阴历年
*/
function getYearZodiac($year)
{
$zodiac = array(‘猴’,‘鸡’,‘狗’,‘猪’,‘鼠’,‘牛’,‘虎’,‘兔’,‘龙’,‘蛇’,‘马’,‘羊’);
return z o d i a c [ zodiac[ zodiac[year];
}

/\*\* 

* 获取阳历月份的天数
* @param year 阳历-年
* @param month 阳历-月
*/
function getSolarMonthDays( y e a r , year, year,month)
{
m o n t h H a s h = a r r a y ( ′ 1 ′ = > 31 , ′ 2 ′ = > monthHash = array('1'=>31,'2'=> monthHash=array(1=>31,2=>this->isLeapYear($year)?29:28,‘3’=>31,‘4’=>30,‘5’=>31,‘6’=>30,‘7’=>31,‘8’=>31,‘9’=>30,‘10’=>31,‘11’=>30,‘12’=>31);
return m o n t h H a s h [ " monthHash[" monthHash["month"];
}

/\*\* 

* 获取阴历月份的天数
* @param year 阴历-年
* @param month 阴历-月,从一月开始
*/
function getLunarMonthDays( y e a r , year, year,month)
{
$monthData = t h i s − > g e t L u n a r M o n t h s ( this->getLunarMonths( this>getLunarMonths(year);
return m o n t h D a t a [ monthData[ monthData[month-1];
}

/\*\* 

* 获取阴历每月的天数的数组
* @param year
*/
function getLunarMonths($year)
{
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year - $this->MIN_YEAR];
$leapMonth = $yearData[0];
b i t = d e c b i n ( bit = decbin( bit=decbin(yearData[3]);
for ($i = 0; i < s t r l e n ( i < strlen( i<strlen(bit);$i ) b i t A r r a y [ bitArray[ bitArray[i] = substr($bit, i , 1 ) ; f o r ( i, 1); for( i,1);for(k=0, k l e n = 16 − c o u n t ( klen=16-count( klen=16count(bitArray); k < k< k<klen; k ) a r r a y _ u n s h i f t ( k ) array\_unshift( k)array_unshift(bitArray, ‘0’);
b i t A r r a y = a r r a y _ s l i c e ( bitArray = array\_slice( bitArray=array_slice(bitArray,0,( l e a p M o n t h = = 0 ? 12 : 13 ) ) ; f o r ( leapMonth==0?12:13)); for( leapMonth==0?12:13));for(i=0; i < c o u n t ( i<count( i<count(bitArray); $i ) b i t A r r a y [ bitArray[ bitArray[i] = b i t A r r a y [ bitArray[ bitArray[i] 29;
return $bitArray;
}

/\*\* 

* 获取农历每年的天数
* @param year 农历年份
*/
function getLunarYearDays($year)
{
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year-$this->MIN_YEAR];
$monthArray = t h i s − > g e t L u n a r Y e a r M o n t h s ( this->getLunarYearMonths( this>getLunarYearMonths(year);
l e n = c o u n t ( len = count( len=count(monthArray);
return ( m o n t h A r r a y [ monthArray[ monthArray[len-1]==0? m o n t h A r r a y [ monthArray[ monthArray[len-2]: m o n t h A r r a y [ monthArray[ monthArray[len-1]);
}

function getLunarYearMonths($year)  

{
//debugger;
$monthData = t h i s − > g e t L u n a r M o n t h s ( this->getLunarMonths( this>getLunarMonths(year);
$res=array();
$temp=0;
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year-$this->MIN_YEAR];
l e n = ( len = ( len=(yearData[0]==0?12:13);
for( i = 0 ; i=0; i=0;i< l e n ; len; len;i )
{
t e m p = 0 ; f o r ( temp=0; for( temp=0;for(j=0; j < = j<= j<=i;$j ) t e m p = temp = temp=monthData[ j ] ; a r r a y _ p u s h ( j]; array\_push( j];array_push(res, $temp);
}
return $res;
}

/\*\* 

* 获取闰月
* @param year 阴历年份
*/
function getLeapMonth($year)
{
$yearData = t h i s − > l u n a r I n f o [ this->lunarInfo[ this>lunarInfo[year-$this->MIN_YEAR];
return $yearData[0];
}

/\*\* 

* 计算阴历日期与正月初一相隔的天数
* @param year
* @param month
* @param date
*/
function getDaysBetweenLunar( y e a r , year, year,month,$date)
{
$yearMonth = t h i s − > g e t L u n a r M o n t h s ( this->getLunarMonths( this>getLunarMonths(year);
r e s = 0 ; f o r ( res=0; for( res=0;for(i=1; i < i< i<month;$i ) r e s = res = res=yearMonth[$i-1];
r e s = res = res=date-1;
return $res;
}

/\*\* 

* 计算2个阳历日期之间的天数
* @param year 阳历年
* @param cmonth
* @param cdate
* @param dmonth 阴历正月对应的阳历月份
* @param ddate 阴历初一对应的阳历天数
*/
function getDaysBetweenSolar( y e a r , year, year,cmonth, c d a t e , cdate, cdate,dmonth,$ddate)
{
a = m k t i m e ( 0 , 0 , 0 , a = mktime(0,0,0, a=mktime(0,0,0,cmonth, c d a t e , cdate, cdate,year);
b = m k t i m e ( 0 , 0 , 0 , b = mktime(0,0,0, b=mktime(0,0,0,dmonth, d d a t e , ddate, ddate,year);
return ceil(( a − a- ab)/24/3600);
}

/\*\* 

* 根据距离正月初一的天数计算阴历日期
* @param year 阳历年
* @param between 天数
*/
function getLunarByBetween( y e a r , year, year,between)
{
//debugger;
$lunarArray = array();
$yearMonth=array();
$t=0;
$e=0;
$leapMonth=0;
m = ′ ′ ; i f ( m=''; if( m=′′;if(between==0)
{
array_push($lunarArray, $year,‘正月’,‘初一’);
$t = 1;
$e = 1;
}
else
{
$year = $between>0? y e a r : ( year : ( year:(year-1);
$yearMonth = t h i s − > g e t L u n a r Y e a r M o n t h s ( this->getLunarYearMonths( this>getLunarYearMonths(year);
$leapMonth = t h i s − > g e t L e a p M o n t h ( this->getLeapMonth( this>getLeapMonth(year);
$between = b e t w e e n > 0 ? between>0? between>0?between : ( t h i s − > g e t L u n a r Y e a r D a y s ( this->getLunarYearDays( this>getLunarYearDays(year) b e t w e e n ) ; f o r ( between); for( between);for(i=0; i < 13 ; i<13; i<13;i )
{
if( b e t w e e n = = between== between==yearMonth[$i])
{
t = t= t=i 2;
KaTeX parse error: Expected 'EOF', got '}' at position 57: … }̲else if(between< y e a r M o n t h [ yearMonth[ yearMonth[i])
{
t = t= t=i 1;
e = e= e=between-(empty( y e a r M o n t h [ yearMonth[ yearMonth[i-1])?0: y e a r M o n t h [ yearMonth[ yearMonth[i-1]) 1;
break;
}
}
m = ( m = ( m=(leapMonth!=0&& t = = t== t==leapMonth 1)?(‘闰’. t h i s − > g e t C a p i t a l N u m ( this->getCapitalNum( this>getCapitalNum(t- 1,true)): t h i s − > g e t C a p i t a l N u m ( ( this->getCapitalNum(( this>getCapitalNum((leapMonth!=0&& l e a p M o n t h 1 < leapMonth 1< leapMonth1<t?( t − 1 ) : t-1): t1):t),true);
array_push( l u n a r A r r a y , lunarArray, lunarArray,year, m , m, m,this->getCapitalNum(KaTeX parse error: Expected 'EOF', got '}' at position 24: …); }̲ ar…lunarArray, t h i s − > g e t L u n a r Y e a r N a m e ( this->getLunarYearName( this>getLunarYearName(year));// 天干地支
array_push( l u n a r A r r a y , lunarArray, lunarArray,t, e ) ; a r r a y _ p u s h ( e); array\_push( e);array_push(lunarArray, t h i s − > g e t Y e a r Z o d i a c ( this->getYearZodiac( this>getYearZodiac(year));// 12生肖
array_push( l u n a r A r r a y , lunarArray, lunarArray,leapMonth);// 闰几月
return $lunarArray;
}

/\*\* 

* 获取数字的阴历叫法
* @param num 数字
* @param isMonth 是否是月份的数字
*/
function getCapitalNum( n u m , num, num,isMonth)
{
$isMonth = $isMonth || false;
$dateHash=array(‘0’=>‘’,‘1’=>‘一’,‘2’=>‘二’,‘3’=>‘三’,‘4’=>‘四’,‘5’=>‘五’,‘6’=>‘六’,‘7’=>‘七’,‘8’=>‘八’,‘9’=>‘九’,‘10’=>‘十 ‘);
$monthHash=array(‘0’=>’’,‘1’=>‘正月’,‘2’=>‘二月’,‘3’=>‘三月’,‘4’=>‘四月’,‘5’=>‘五月’,‘6’=>‘六月’,‘7’=>‘七月’,‘8’=>‘八月’,‘9’=>‘九月’,‘10’=>‘十月’,‘11’=>‘冬月’,‘12’=>‘腊月’);
r e s = ′ ′ ; i f ( res=''; if( res=′′;if(isMonth) $res = m o n t h H a s h [ monthHash[ monthHash[num];
else
{
if($num<=10) r e s = ′ 初 ′ . res = '初'. res=.dateHash[ n u m ] ; e l s e i f ( num]; else if( num];elseif(num>10&&$num<20) r e s = ′ 十 ′ . res = '十'. res=.dateHash[ n u m − 10 ] ; e l s e i f ( num-10]; else if( num10];elseif(num20) r e s = " 二十 " ; e l s e i f ( res = "二十"; else if( res="二十";elseif(num>20&&$num<30) r e s = " 廿 " . res = "廿". res="廿".dateHash[ n u m − 20 ] ; e l s e i f ( num-20]; else if( num20];elseif(num30) $res = “三十”;
}
return $res;
}

/\* 

* 节气通用算法
*/
function getJieQi( y e a r , _year, year,month,$day)
{
y e a r = s u b s t r ( year = substr( 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),//夏至

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值