100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PHP实现阳历转阴历办法

PHP实现阳历转阴历办法

时间:2018-07-17 16:48:37

相关推荐

PHP实现阳历转阴历办法

后端开发|php教程

php,方法,阴历

后端开发-php教程php类

ranklib 源码下载,ubuntu快速打开应用,怎么部署2个tomcat,极光爬虫带,php程序可以加密吗,乌海seo外包lzw

3d引擎源码,清除硬盘安装ubuntu,tomcat配置本地路劲,pytion 爬虫教程,柚子家政php版,墨子seo第八期视频教程lzw

lunarInfo[$year-$this->MIN_YEAR]; if($year==$this->MIN_YEAR&&$month<=2&&$dategetLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2])); } public function convertSolarMonthToLunar($year,$month,$date) { $yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; if($year==$this->MIN_YEAR&&$month<=2&&$dateisLeapYear($year) && $month == 2) $dd++; $lunar_ary = array(); for ($i = 1; $i getLunarByBetween($year,$this->getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2]));$array[] = $year . - . $month . - . $i;$lunar_ary[$i] = $array; } return $lunar_ary; } /** * 将阴历转换为阳历 * @param year 阴历-年 * @param month 阴历-月,闰月处理:例如如果当年闰五月,那么第二个五月就传六月,相当于阴历有13个月,只是有的时候第13个月的天数为0 * @param date 阴历-日 */ public function convertLunarToSolar($year,$month,$date) { $yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; $between = $this->getDaysBetweenLunar($year,$month,$date); $res = mktime(0,0,0,$yearData[1],$yearData[2],$year); $res = date(Y-m-d, $res+$between*24*60*60); $day = explode(-, $res); $year = $day[0]; $month= $day[1]; $day = $day[2]; return array($year, $month, $day); } /** * 判断是否是闰年 * @param year */ public function isLeapYear($year) { return (($year%4==0 && $year%100 !=0) || ($year%400==0)); } /** * 获取干支纪年 * @param year */ public function getLunarYearName($year) { $sky = array(庚,辛,壬,癸,甲,乙,丙,丁,戊,己); $earth = array(申,酉,戌,亥,子,丑,寅,卯,辰,巳,午,未); $year = $year.\; return $sky[$year{3}].$earth[$year%12]; } /** * 根据阴历年获取生肖 * @param year 阴历年 */ public function getYearZodiac($year) { $zodiac = array(猴,鸡,狗,猪,鼠,牛,虎,兔,龙,蛇,马,羊); return $zodiac[$year%12]; } /** * 获取阳历月份的天数 * @param year 阳历-年 * @param month 阳历-月 */ public function getSolarMonthDays($year,$month) { $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 $monthHash["$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, ); $bitArray = array_slice($bitArray,0,($leapMonth==0?12:13)); for($i=0; $ilunarInfo[$year-$this->MIN_YEAR]; $monthArray = $this->getLunarYearMonths($year); $len = count($monthArray); return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]); } public function getLunarYearMonths($year) { $monthData = $this->getLunarMonths($year); $res=array(); $temp=0; $yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; $len = ($yearData[0]==0?12:13); for($i=0;$i<$len;$i++) {$temp=0;for($j=0;$jlunarInfo[$year-$this->MIN_YEAR]; return $yearData[0]; } /** * 计算阴历日期与正月初一相隔的天数 * @param year * @param month * @param date */ public function getDaysBetweenLunar($year,$month,$date) { $yearMonth = $this->getLunarMonths($year); $res=0; for($i=1;$i0? $year : ($year-1);$yearMonth = $this->getLunarYearMonths($year);$leapMonth = $this->getLeapMonth($year);$between = $between>0?$between : ($this->getLunarYearDays($year)+$between);for($i=0;$i<13;$i++){ if($between==$yearMonth[$i]) {$t=$i+2;$e=1;break; }else if($betweengetCapitalNum($t- 1,true)):$this->getCapitalNum(($leapMonth!=0&&$leapMonth+1getCapitalNum($e,false)); } array_push($lunarArray,$this->getLunarYearName($year));// 天干地支 array_push($lunarArray,$t,$e); array_push($lunarArray,$this->getYearZodiac($year));// 12生肖 array_push($lunarArray,$leapMonth);// 闰几月 return $lunarArray; } /** * 获取数字的阴历叫法 * @param num 数字 * @param isMonth 是否是月份的数字 */ public function getCapitalNum($num,$isMonth) { $isMonth = $isMonth || false; $dateHash=array(=>\,1=>一,2=>二,3=>三,4=>四,5=>五,6=>六,7=>七,8=>八,9=>九,10=>十 ); $monthHash=array(=>\,1=>正月,2=>二月,3=>三月,4=>四月,5=>五月,6=>六月,7=>七月,8=>八月,9=>九月,10=>十月,11=>冬月,12=>腊月); $res=\; if($isMonth) $res = $monthHash[$num]; else {if($num10&&$num20&&$num春节,1-15=>元宵节,2-02=>二月二,5-05=>端午节,7-07=>七夕节,8-15=>中秋节,9-09=>重阳节,12-08=>腊八节,12-23=>小年);$arr_solar=array(1-01=>元旦,2-14=>情人节,3-12=>植树节,4-01=>愚人节,5-01=>劳动节,6-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]7)&&($d14)&&($dgetJieQi($y,$m,$d); if($jieqi)array_push($festivals,$jieqi); return implode(/,$festivals); }}

调用方法:

爱奇艺源码是什么意思,vscode如何改图标样式,vm 12 ubuntu,tomcat实现jsp页面,卧室 香水 爬虫,php modify,嘉善智能化seo推广,网站模板 商标,仿淘宝头条模板lzw

$lunar = new Lunar();$month = $lunar->convertSolarToLunar(date(Y),date(m),date(d));print_r($month);

运行结果:

Array( [0] => [1] => 闰六月 [2] => 十七 [3] => 丁酉 [4] => 7 [5] => 17 [6] => 鸡 [7] => 6)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。