php lunar calendar lunar calendar conversion class code

  • 2020-05-10 17:55:39
  • OfStack


<?php
/**
*  Lunar calendar conversion (1912 - 2012) 
* 
* Usage:
*   //  The Gregorian calendar. 1983-10-5 Turn to the lunar calendar 
*   $lunar = new Lunar();
*   $date = $lunar->getLar('1983-10-5',0);
*   echo date("Y-m-d", $date);
*   //  According to the lunar calendar 1983-8-29 Turn to the Gregorian calendar 
*   $date = $lunar->getLar('1983-8-29',1);
*   echo date("Y-m-d", $date);
*
* @param string  The date of 
* @param int     The calendar date 
*      - 0  The Gregorian calendar. 
*        1  According to the lunar calendar 
*
* @return timestamp
   
   This is a 1 The national calendar and the lunar calendar turn each other Unit.
   The years are all years of the republic of China ,  Please convert yourself  ( In the year -1911 =  Years of the republic of China ).
  ***************************************************************************
  * Description of the Chinese lunar calendar  :                                                     *
  ***************************************************************************
  *   before 2 digital  =  Leap month month ,  If it is  13  There is no leap month                               *
  *   The first visit to the first 6 digital  = 12  The size of a month 2 Binary code ->10 carry                       *
  *   For example, :                                                                  *
  *       101010101010 = 2730                                               *
  *       1 :  On behalf of the monthly (30 day ) 0 :  On behalf of abortion (29 day ) ==> 1 Month old 2 In a small 3 Month old ..    *
  *   The first 7 The digit number is the number of days in a leap month                                                    *
  *           0 :  The number of days without a leap month                                             *
  *           1 :  A leap month is a small month (29 day )                                          *
  *           2 :  A leap month is a large month (30 day )                                          *
  *   The last 2 The digit represents the solar calendar 1 month 1 The sun and the lunar calendar 1 month 1 Day difference                       *
  ***************************************************************************
   This antipodal table has only the republic of China 1 To the republic of China 1 In one hundred, ,  If it is not enough for your use, please increase it as described above .
   This program does not determine the year you entered , month , Is the date correct? ,  Please judge for yourself .
   If the converted lunar month is a leap month, the value passed to you is *** A negative number ***
   If the lunar calendar is to be converted, please enter if it is a leap month *** A negative number ***
   This version of FreeWare   Version : 0.1
   You can modify it yourself ,  But it is better to modify the program Mail1 To me .
   If you want to use it for commercial purposes ,  please mail Tell me what it is for and why .

*/
class Lunar {
   var $LMDay = array();
   var $InterMonth = 0;
   var $InterMonthDays = 0;
   var $SLRangeDay = 0;
   var $SMDay = array(1 => 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   var $LongLife = array( 1 =>
   '132637048', '133365036', '053365225', '132900044', '131386034', '022778122', //6
   '132395041', '071175231', '131175050', '132635038', '052891127', '131701046', //12
   '131748035', '042741223', '130694043', '132391032', '021327122', '131175040', //18
   '061623129', '133402047', '133402036', '051769125', '131453044', '130694034', //24
   '032158223', '132350041', '073213230', '133221049', '133402038', '063466226', //30
   '132901045', '131130035', '042651224', '130605043', '132349032', '023371121', //36
   '132709040', '072901128', '131738047', '132901036', '051333226', '131210044', //42
   '132651033', '031111223', '131323042', '082714130', '133733048', '131706038', //48
   '062794127', '132741045', '131206035', '042734124', '132647043', '131318032', //54
   '033878120', '133477039', '071461129', '131386047', '132413036', '051245126', //60
   '131197045', '132637033', '043405122', '133365041', '083413130', '132900048', //66
   '132922037', '062394227', '132395046', '131179035', '042711124', '132635043', //72
   '102855132', '131701050', '131748039', '062804128', '132742047', '132359036', //78
   '051199126', '131175045', '131611034', '031866122', '133749040', '081717130', //84
   '131452049', '132742037', '052413127', '132350046', '133222035', '043477123', //90
   '133402042', '133493031', '021877121', '131386039', '072747128', '130605048', //96
   '132349037', '053243125', '132709044', '132890033');

   function getLar($date, $isLunar = 1){
       list($year, $month, $day) = split("-", $date);
       if($isLunar == 1)
           return $this->Lunar2Solar($year, $month, $day);
       else
           return $this->Solar2Lunar($year, $month, $day);
   }

   function IsLeapYear($AYear){
     return ($AYear % 4 == 0) and (($AYear % 100 <> 0) or ($AYear % 400 == 0));
   }

   function CovertLunarMonth($magicno){
        $m = $magicno;
        for ($i = 12; $i >= 1; $i--){
            $size = $m % 2;
            if ($size == 0)
               $this->LMDay[$i] = 29;
            else
               $this->LMDay[$i] = 30;
            $m = floor($m / 2);
        }
    }

    function ProcessMagicStr($yy){
         $yy = $yy - 1911;
         $magicstr = $this->LongLife[$yy];
         $this->InterMonth = substr($magicstr, 0, 2);
         $LunarMonth = substr($magicstr, 2, 4);
         $this->CovertLunarMonth($LunarMonth);
         $dsize = substr($magicstr, 6, 1);
         switch ($dsize) {
              case 0 : 
                $this->InterMonthDays = 0;
                break;
              case 1 : 
                $this->InterMonthDays = 29;
                break;
              case 2 : 
                $this->InterMonthDays = 30;
                break;
         }
         $this->SLRangeDay = substr($magicstr, 7, 2);
    }

    function DaysPerLunarMonth($LYear, $LMonth){
         $this->ProcessMagicStr($LYear);
         if ($LMonth < 0)
            return $this->InterMonthDays;
         else
            return $this->LMDay[$LMonth];
    }

    function Solar2Lunar($SYear, $SMonth, $SDay){
         if( !(1912 <= $SYear && $SYear <= 2012) ){
            return false;
         }
         $day = 0;
         if ($this->isLeapYear($SYear))
            $this->SMDay[2] = 29;
         $this->ProcessMagicStr($SYear);
         if ($SMonth == 1)
            $day = $SDay;
         else {
            for($i = 1; $i <= $SMonth-1; $i++)
                $day = $day + $this->SMDay[$i];
            $day = $day + $SDay;
         }
         if ($day <= $this->SLRangeDay) {
            $day = $day - $this->SLRangeDay;
            $this->processmagicstr($SYear-1);
            for ($i = 12; $i >= 1; $i--){
                $day = $day + $this->LMDay[$i];
                if ($day > 0)
                   break;
            }
            $LYear = $SYear - 1;
            $LMonth = $i;
            $LDay = $day;
         } else {
            $day = $day - $this->SLRangeDay;
            for($i = 1; $i <= $this->InterMonth-1; $i++){
                $day = $day - $this->LMDay[$i];
                if ($day <= 0)
                   break;
            }
            if ($day <= 0) {
               $LYear = $SYear;
               $LMonth = $i;
               $LDay = $day + $this->LMDay[$i];
            } else {
               $day = $day - $this->LMDay[$this->InterMonth];
               if ($day <= 0) {
                  $LYear = $SYear;
                  $LMonth = $this->InterMonth;
                  $LDay = $day + $this->LMDay[$this->InterMonth];
               } else {
                  $this->LMDay[$this->InterMonth] = $this->InterMonthDays;
                  for ($i = $this->InterMonth; $i <= 12; $i++){
                      $day = $day - $this->LMDay[$i];
                      if ($day <= 0)
                         break;
                  }
                  if ($i == $this->InterMonth)
                     $LMonth = 0 - $this->InterMonth;
                  else
                     $LMonth = $i;
                  $LYear = $SYear;
                  $LDay = $day + $this->LMDay[$i];
               }
            }
         }
         return mktime(0, 0, 0, $LMonth, $LDay, $LYear);
    }

    function Lunar2Solar($LYear, $LMonth, $LDay){
         if( !(1912 <= $LYear && $LYear <= 2012) ){
            return false;
         }
         $day = 0;
         $SYear = $LYear;
         if ($this->isLeapYear($SYear))
            $this->SMDay[2] = 29;
         $this->processmagicstr($SYear);
         if ($LMonth < 0)
            $day = $this->LMDay[$this->InterMonth];
         if ($LMonth <> 1)
            for ($i = 1; $i <= $LMonth-1; $i++)
                $day = $day + $this->LMDay[$i];
         $day = $day + $LDay + $this->SLRangeDay;
         if (($this->InterMonth <> 13) and ($this->InterMonth < $LMonth))
            $day = $day + $this->InterMonthDays;
         for ($i = 1; $i <= 12; $i++){
             $day = $day - $this->SMDay[$i];
             if ($day <= 0)
                break;
         }
         if ($day > 0) {
            $SYear = $SYear + 1;
            if ($this->isLeapYear($SYear))
               $this->SMDay[2] = 29;
            for ($i = 1; $i <= 12; $i++){
                $day = $day - $this->SMDay[$i];
                if ($day <= 0)
                   break;
            }
         }
         $day = $day + $this->SMDay[$i];
         $SMonth = $i;
         $SDay = $day;
         return mktime(0, 0, 0, $SMonth, $SDay, $SYear);
    }
}
?>

Usage:

 $lunar = new Lunar();
   $date = $lunar->getLar('1983-10-5',0);
   echo date("Y-m-d", $date);
   //  According to the lunar calendar 1983-8-29 Turn to the Gregorian calendar 
   $date = $lunar->getLar('1983-8-29',1);
   echo date("Y-m-d", $date);



 
<?php 
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) 
); 
/** 
*  Convert the solar calendar to the lunar calendar  
* @param year  The Gregorian calendar. - years  
* @param month  The Gregorian calendar. - month  
* @param date  The Gregorian calendar. - day  
*/ 
function convertSolarToLunar($year,$month,$date){ 
//debugger; 
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; 
if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){ 
return array(1891,' In the first month ',' In the early 1',' XinMao ',1,1,' The rabbit '); 
} 
return $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2])); 
} 

function convertSolarMonthToLunar($year,$month) { 
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; 
if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){ 
return array(1891,' In the first month ',' In the early 1',' XinMao ',1,1,' The rabbit '); 
} 
$month_days_ary = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); 
$dd = $month_days_ary[$month]; 
if($this->isLeapYear($year) && $month == 2) $dd++; 
$lunar_ary = array(); 
for ($i = 1; $i < $dd; $i++) { 
$array = $this->getLunarByBetween($year,$this->getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2])); 
$array[] = $year . '-' . $month . '-' . $i; 
$lunar_ary[$i] = $array; 
} 
return $lunar_ary; 
} 
/** 
*  Convert the lunar calendar to the solar calendar  
* @param year  The lunar calendar - years  
* @param month  The lunar calendar - Month, leap month processing: for example, if the year leap 5 Month, so the day 2 a 5 Months pass 6 Month, equivalent to the lunar calendar 13 Month, only sometimes no 13 The days of months are 0 
* @param date  The lunar calendar - day  
*/ 
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); 
} 
/** 
*  Determine if it is a leap year  
* @param year 
*/ 
function isLeapYear($year){ 
return (($year%4==0 && $year%100 !=0) || ($year%400==0)); 
} 
/** 
*  Get the dry and branch calendar year  
* @param year 
*/ 
function getLunarYearName($year){ 
$sky = array(' heptyl ',' simba ',' nonyl ',' decyl ',' a ',' b ',' c ',' ding ',' e ',' f '); 
$earth = array(' " ',' unitary ',' xu-gou ',' hai ',' The child ',' The ugly ',' Yin ',' sockets ',' Chen" ',' The third ',' noon ',' not '); 
$year = $year.''; 
return $sky[$year{3}].$earth[$year%12]; 
} 
/** 
*  Get the zodiac according to the lunar year  
* @param year  The lunar  
*/ 
function getYearZodiac($year){ 
$zodiac = array(' The monkey ',' chicken ',' The dog ',' The pig ',' The rat ',' The cow ',' The tiger ',' The rabbit ',' dragon ',' The snake ',' The horse ',' The sheep '); 
return $zodiac[$year%12]; 
} 
/** 
*  Gets the number of days in a solar month  
* @param year  The Gregorian calendar - years  
* @param month  The Gregorian calendar - month  
*/ 
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"]; 
} 
/** 
*  Gets the number of days in a lunar month  
* @param year  The lunar calendar - years  
* @param month  The lunar calendar - Month from 1 month  
*/ 
function getLunarMonthDays($year,$month){ 
$monthData = $this->getLunarMonths($year); 
return $monthData[$month-1]; 
} 
/** 
*  Gets an array of the days of a lunar month  
* @param year 
*/ 
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?12:13)); 
for($i=0; $i<count($bitArray); $i++){ 
$bitArray[$i] = $bitArray[$i] + 29; 
} 
return $bitArray; 
} 
/** 
*  Gets the number of days per year in the lunar calendar  
* @param year  Chinese New Year  
*/ 
function getLunarYearDays($year){ 
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; 
$monthArray = $this->getLunarYearMonths($year); 
$len = count($monthArray); 
return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]); 
} 
function getLunarYearMonths($year){ 
//debugger; 
$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;$j<=$i;$j++){ 
$temp+=$monthData[$j]; 
} 
array_push($res, $temp); 
} 
return $res; 
} 
/** 
*  Access to leap month  
* @param year  The lunar year  
*/ 
function getLeapMonth($year){ 
$yearData = $this->lunarInfo[$year-$this->MIN_YEAR]; 
return $yearData[0]; 
} 
/** 
*  Calculate the lunar calendar date and the beginning of the first month 1 Days apart  
* @param year 
* @param month 
* @param date 
*/ 
function getDaysBetweenLunar($year,$month,$date){ 
$yearMonth = $this->getLunarMonths($year); 
$res=0; 
for($i=1;$i<$month;$i++){ 
$res +=$yearMonth[$i-1]; 
} 
$res+=$date-1; 
return $res; 
} 
/** 
*  To calculate 2 The number of days between calendar dates  
* @param year  The solar year  
* @param cmonth 
* @param cdate 
* @param dmonth  The Gregorian month corresponding to the first lunar month  
* @param ddate  At the beginning of the lunar calendar 1 The corresponding solar calendar days  
*/ 
function getDaysBetweenSolar($year,$cmonth,$cdate,$dmonth,$ddate){ 
$a = mktime(0,0,0,$cmonth,$cdate,$year); 
$b = mktime(0,0,0,$dmonth,$ddate,$year); 
return ceil(($a-$b)/24/3600); 
} 
/** 
*  According to the distance from the beginning of January 1 The number of days counts as a lunar calendar date  
* @param year  The solar year  
* @param between  Number of days  
*/ 
function getLunarByBetween($year,$between){ 
//debugger; 
$lunarArray = array(); 
$yearMonth=array(); 
$t=0; 
$e=0; 
$leapMonth=0; 
$m=''; 
if($between==0){ 
array_push($lunarArray, $year,' In the first month ',' In the early 1'); 
$t = 1; 
$e = 1; 
}else{ 
$year = $between>0? $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($between<$yearMonth[$i]){ 
$t=$i+1; 
$e=$between-(empty($yearMonth[$i-1])?0:$yearMonth[$i-1])+1; 
break; 
} 
} 
$m = ($leapMonth!=0&&$t==$leapMonth+1)?(' A leap '.$this->getCapitalNum($t- 1,true)):$this->getCapitalNum(($leapMonth!=0&&$leapMonth+1<$t?($t-1):$t),true); 
array_push($lunarArray,$year,$m,$this->getCapitalNum($e,false)); 
} 
array_push($lunarArray,$this->getLunarYearName($year));//  Chinese era  
array_push($lunarArray,$t,$e); 
array_push($lunarArray,$this->getYearZodiac($year));// 12 Chinese zodiac  
array_push($lunarArray,$leapMonth);//  A leap for a few months  
return $lunarArray; 
} 
/** 
*  The lunar calendar for obtaining Numbers  
* @param num  digital  
* @param isMonth  Is it the number of months  
*/ 
function getCapitalNum($num,$isMonth){ 
$isMonth = $isMonth || false; 
$dateHash=array('0'=>'','1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6','7'=>'7','8'=>'8','9'=>'9','10'=>'10 '); 
$monthHash=array('0'=>'','1'=>' In the first month ','2'=>'2 month ','3'=>'3 month ','4'=>'4 month ','5'=>'5 month ','6'=>'6 month ','7'=>'7 month ','8'=>'8 month ','9'=>'9 month ','10'=>'10 month ','11'=>' during ','12'=>' lunar '); 
$res=''; 
if($isMonth){ 
$res = $monthHash[$num]; 
}else{ 
if($num<=10){ 
$res = ' In the early '.$dateHash[$num]; 
}else if($num>10&&$num<20){ 
$res = '10'.$dateHash[$num-10]; 
}else if($num==20){ 
$res = "210"; 
}else if($num>20&&$num<30){ 
$res = " 21 ".$dateHash[$num-20]; 
}else if($num==30){ 
$res = "310"; 
} 
} 
return $res; 
} 
} 
$lunar = new Lunar(); 
$month = $lunar->convertLunarToSolar(2012, 1,1); 
print_r($month); 
exit; 

Related articles: