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

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


下载地址

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