VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP实现阳历到农历转换的类实例

这篇文章主要介绍了PHP实现阳历到农历转换的类,实例分析了阳历转换到阴历的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下.

本文实例讲述了PHP实现阳历到农历转换的类,分享给大家供大家参考,具体如下:

  1. <?php 
  2. //PHP阳历到农历转换的一个类 
  3. class Calendar 
  4. { 
  5. //农历每月的天数 
  6.     var $everyCMonth=array( 
  7.     0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 
  8.     1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 
  9.     2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 
  10.     3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 
  11.     4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 
  12.     5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6), 
  13.     6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 
  14.     7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8), 
  15.     8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 
  16.     9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10), 
  17.     10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 
  18.     11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 
  19.     12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1), 
  20.     13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 
  21.     14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 
  22.     15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 
  23.     16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 
  24.     17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 
  25.     18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 
  26.     19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 
  27.     20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 
  28.     21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 
  29.     22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 
  30.     23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 
  31.     24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1), 
  32.     25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 
  33.     26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3), 
  34.     27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4), 
  35.     28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5), 
  36.     29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 
  37.     30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 
  38.     31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8), 
  39.     32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 
  40.     33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10), 
  41.     34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 
  42.     35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12), 
  43.     36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 
  44.     37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 
  45.     38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 
  46.     39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 
  47.     40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5), 
  48.     41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 
  49.     42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7), 
  50.     43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 
  51.     44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9), 
  52.     45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 
  53.     46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11), 
  54.     47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 
  55.     48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1), 
  56.     49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 
  57.     50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 
  58.     51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 
  59.     52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 
  60.     53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6), 
  61.     54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 
  62.     55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8), 
  63.     56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 
  64.     57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10), 
  65.     58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 
  66.     59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12), 
  67.     60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 
  68.     61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2), 
  69.     62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 
  70.     63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 
  71.     64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5), 
  72.     65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 
  73.     66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7), 
  74.     67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 
  75.     68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9), 
  76.     69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 
  77.     70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11), 
  78.     71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 
  79.     72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1), 
  80.     73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 
  81.     74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 
  82.     75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 
  83.     76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 
  84.     77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 
  85.     78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 
  86.     79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 
  87.     80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 
  88.     81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 
  89.     82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 
  90.     83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 
  91.     84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 
  92.     85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 
  93.     86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3), 
  94.     87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4), 
  95.     88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5), 
  96.     89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 
  97.     90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 
  98.     91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 
  99.     92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 
  100.     93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 
  101.     94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 
  102.     95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 
  103.     96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1), 
  104.     97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 
  105.     98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3), 
  106.     99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 
  107.     100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5), 
  108.     101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 
  109.     102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7), 
  110.     103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 
  111.     104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 
  112.     105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10), 
  113.     106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 
  114.     107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 
  115.     108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 
  116.     109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 
  117.     110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 
  118.     111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 
  119.     112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 
  120.     113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 
  121.     114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 
  122.     115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 
  123.     116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9), 
  124.     117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10), 
  125.     118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11), 
  126.     119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 
  127.     120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1) 
  128.     ); 
  129. //农历天干 
  130.     var $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");    //农历地支 
  131.     var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)", 
  132.                    "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");    //农历月份 
  133.     var $mmonth=array("闰","正","二","三","四","五","六", 
  134.                   "七","八","九","十","十一","十二","月"); 
  135.     var $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十", 
  136.                 "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十", 
  137.                 "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");//农历日 
  138. //赋给初值 
  139. //天干地支 
  140.     var $ten=0; 
  141.     var $twelve=0; 
  142.     function MyPub($cYear,$cMonth,$cDay) 
  143.     { 
  144.         $total=11;//阳历总天数 至1900年12月21日   
  145.         $mtotal=0;//阴历总天数 
  146.         for ($y=1901;$y<$cYear;$y++) 
  147.         { 
  148.             $total+=365; 
  149.             if ($y%4==0) $total ++; 
  150.         } 
  151.         //再加当年的几个月 
  152.         switch ($cMonth){ 
  153.                  case 12: 
  154.                       $total+=30; 
  155.                  case 11: 
  156.                       $total+=31; 
  157.                  case 10: 
  158.                       $total+=30; 
  159.                  case 9: 
  160.                       $total+=31; 
  161.                  case 8: 
  162.                       $total+=31; 
  163.                  case 7: 
  164.                       $total+=30; 
  165.                  case 6: 
  166.                       $total+=31; 
  167.                  case 5: 
  168.                       $total+=30; 
  169.                  case 4: 
  170.                       $total+=31; 
  171.                  case 3: 
  172.                       $total+=28; 
  173.                  case 2: 
  174.                       $total+=31; 
  175.                } 
  176.  
  177.             //如果当年是闰年还要加一天 
  178.             if ($cYear%4==0 and $cMonth>2) 
  179.             { 
  180.                 $total++; 
  181.             } 
  182.             $total+=$cDay-1; 
  183.             //用农历的天数累加来判断是否超过阳历的天数 
  184.             for($j=0;$j<=120;$j++) 
  185.             { 
  186.                 $i=1; 
  187.                 for($i=1;$i<=13;$i++) 
  188.                 { 
  189.                     $mtotal+=$this->everyCMonth[$j][$i]; 
  190.                     if ($mtotal>=$total) 
  191.                     { 
  192.                         $flag=1; 
  193.                         break; 
  194.                     } 
  195.                 } 
  196.                 if ($flag==1)break; 
  197.             } 
  198.                     return array("m"=>$j,"d"=>$i,"t"=>$total,"n"=>$mtotal); 
  199.     } 
  200.     function Cal($Year,$Month,$Day) 
  201.     { 
  202.         $Par=$this->MyPub($Year,$Month,$Day); 
  203.  
  204.         $md=$this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n"]-$Par["t"]); 
  205.         $week=($Par["t"]+5)%7; 
  206.         if ($this->everyCMonth[$Par["m"]][0]<>0 and $this->everyCMonth[$Par["m"]][0]<$Par["d"]) 
  207.         { 
  208.                 $mm=$Par["d"]-1; 
  209.         }else{ 
  210.                 $mm=$Par["d"]; 
  211.         } 
  212.         if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+1 and $this->everyCMonth[$Par["d"]][0]<>0) 
  213.         { 
  214.             $cMonth=$this->mmonth[0].$this->mmonth[$mm];//闰月 
  215.         }else{ 
  216.             $cMonth=$this->mmonth[$mm].$this->mmonth[13]; 
  217.         } 
  218.         return array("year"=>$this->mten[$this->everyCMonth[$Par["m"]][14]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]], 
  219.                     "month"=>$cMonth, 
  220.                     "day"=>$this->mday[$md], 
  221.                     "week"=>$week); 
  222.     } 
  223. } 
  224. /////调用 
  225. $test=new Calendar; 
  226. $Year=$test->Cal(2004,2,20); 
  227. echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"]; 
  228. ?> 

希望本文所述对大家的php程序设计有所帮助。

 

出处:http://www.phpfensi.com/php/20210515/15364.html


相关教程