最新消息: 新版网站上线了!!!

php获取农历日历的方法

  1. <?php 
  2.  
  3. /* 
  4. http://www.china-on-site.com/flexphpsite/ 
  5. This function can return the date of Chinese lunar calendar which is corresponding to the Gregorian calendar. Range from Jan  1st,1901 to Feb 11th,2021. 
  6. */ 
  7.  
  8. function getchinesedate($year,$month,$day
  9.  
  10.  
  11.     $cdate_monthdata=array
  12.         0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 
  13.         1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 
  14.         2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 
  15.         3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 
  16.         4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 
  17.         5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6), 
  18.         6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 
  19.         7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8), 
  20.         8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 
  21.         9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10), 
  22.         10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 
  23.         11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 
  24.         12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1), 
  25.         13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 
  26.         14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 
  27.         15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 
  28.         16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 
  29.         17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 
  30.         18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 
  31.         19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 
  32.         20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 
  33.         21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 
  34.         22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 
  35.         23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 
  36.         24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1), 
  37.         25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 
  38.         26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3), 
  39.         27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4), 
  40.         28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5), 
  41.         29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 
  42.         30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 
  43.         31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8), 
  44.         32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 
  45.         33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10), 
  46.         34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 
  47.         35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12), 
  48.         36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 
  49.         37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 
  50.         38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 
  51.         39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 
  52.         40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5), 
  53.         41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 
  54.         42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7), 
  55.         43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 
  56.         44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9), 
  57.         45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 
  58.         46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11), 
  59.         47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 
  60.         48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1), 
  61.         49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 
  62.         50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 
  63.         51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 
  64.         52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 
  65.         53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6), 
  66.         54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 
  67.         55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8), 
  68.         56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 
  69.         57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10), 
  70.         58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 
  71.         59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12), 
  72.         60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 
  73.         61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2), 
  74.         62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 
  75.         63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 
  76.         64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5), 
  77.         65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 
  78.         66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7), 
  79.         67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 
  80.         68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9), 
  81.         69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 
  82.         70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11), 
  83.         71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 
  84.         72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1), 
  85.         73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 
  86.         74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 
  87.         75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 
  88.         76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 
  89.         77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 
  90.         78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 
  91.         79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 
  92.         80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 
  93.         81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 
  94.         82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 
  95.         83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 
  96.         84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 
  97.         85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 
  98.         86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3), 
  99.         87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4), 
  100.         88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5), 
  101.         89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 
  102.         90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 
  103.         91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 
  104.         92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 
  105.         93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 
  106.         94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 
  107.         95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 
  108.         96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1), 
  109.         97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 
  110.         98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3), 
  111.         99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 
  112.         100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5), 
  113.         101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 
  114.         102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7), 
  115.         103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 
  116.         104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 
  117.         105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10), 
  118.         106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 
  119.         107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 
  120.         108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 
  121.         109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 
  122.         110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 
  123.         111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 
  124.         112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 
  125.         113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 
  126.         114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 
  127.         115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 
  128.         116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9), 
  129.         117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10), 
  130.         118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11), 
  131.         119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 
  132.         120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1) 
  133.     ); 
  134.  
  135.     $cdate_tianganarray=array("null","Jia","Yi","Bing","Ding","Wu","Ji","Geng","Xin","Ren","Kui"); 
  136.  
  137.     $cdate_dizhiarray=array("null","Zi","Chou","Yin","Mao","Chen","Si","Wu","Wei","Shen","You","Xu","Hai"); 
  138.  
  139.     $cdate_zodiacarray=array("null","Rat","Ox","Tiger","Rabbit","Dragon","Snake","Horse","Sheep","Monkey","Rooster","Dog","Pig"); 
  140.  
  141.     $cdate_total=11; 
  142.     $cdate_cntotal=0; 
  143.  
  144.  
  145.  
  146.     for ($y=1901;$y<$year;$y++){ 
  147.         $cdate_total+=365; 
  148.         if ($y%4==0) $cdate_total ++; 
  149.     } 
  150.  
  151.     switch ($month){ 
  152.         case 12: 
  153.             $cdate_total+=30; 
  154.         case 11: 
  155.             $cdate_total+=31; 
  156.         case 10: 
  157.             $cdate_total+=30; 
  158.         case 9: 
  159.             $cdate_total+=31; 
  160.         case 8: 
  161.             $cdate_total+=31; 
  162.         case 7: 
  163.             $cdate_total+=30; 
  164.         case 6: 
  165.             $cdate_total+=31; 
  166.         case 5: 
  167.             $cdate_total+=30; 
  168.         case 4: 
  169.             $cdate_total+=31; 
  170.         case 3: 
  171.             $cdate_total+=28; 
  172.         case 2: 
  173.             $cdate_total+=31; 
  174.     } 
  175.  
  176.     if ($year%4==0 and $month>2){ 
  177.         $cdate_total++; 
  178.     } 
  179.  
  180.     $cdate_total = $cdate_total+($day-1); 
  181.  
  182.     $myeardiff = $year-1900; 
  183.  
  184.     for ($x=0;$x<=$myeardiff;$x++){ 
  185.         for ($y=1;$y<=13;$y++){ 
  186.             if ($cdate_cntotal<$cdate_total){ 
  187.                 $cdate_cntotal+=$cdate_monthdata[$x][$y]; 
  188.                 $cdate_cnyear = $x
  189.                 $cdate_cnmonth = $y
  190.             } 
  191.         } 
  192.     } 
  193.  
  194.     if (($cdate_cnmonth==$cdate_monthdata[$cdate_cnyear][0]+1)&&($cdate_monthdata[$cdate_cnyear][0]>0)) { 
  195.         $cdate_leap=1; 
  196.     }else
  197.         $cdate_leap=0; 
  198.     } 
  199.  
  200.     $cdate_cnday=$cdate_monthdata[$cdate_cnyear][$cdate_cnmonth]-($cdate_cntotal-$cdate_total); 
  201.  
  202.     if (($cdate_monthdata[$cdate_cnyear][0]>0)&&($cdate_monthdata[$cdate_cnyear][0]<$cdate_cnmonth)) { 
  203.         $cdate_cnmonth = $cdate_cnmonth-1; 
  204.     } 
  205.  
  206.     $cdate_tiangan = $cdate_tianganarray[$cdate_monthdata[$cdate_cnyear][14]]; 
  207.     $cdate_dizhi = $cdate_dizhiarray[$cdate_monthdata[$cdate_cnyear][15]]; 
  208.     $cdate_zodiac = $cdate_zodiacarray[$cdate_monthdata[$cdate_cnyear][15]]; 
  209.     $cdate_cnyear += 1900; 
  210.  
  211.     $cdate_result = array($cdate_cnyear,$cdate_cnmonth,$cdate_cnday,$cdate_leap,$cdate_tiangan,$cdate_dizhi); 
  212.  
  213.     return $cdate_result
  214.  
  215. $arr = getchinesedate('2015','10','15'); 
  216. echo '农历'.$arr[0].'年'.$arr[1],'月',$arr[2].'日'
  217. ?> 


下载地址

转载请注明:谷谷点程序 » php获取农历日历的方法