当前位置:多学网学习教育电脑学习编程入门PHP教程PHP阳历到农历转换的一个类

PHP阳历到农历转换的一个类

[08-23 22:08:17]   来源:http://www.duoxue8.com  PHP教程   阅读:792
PHP阳历到农历转换的一个类,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com
<?php 
//PHP阳历到农历转换的一个类 
class Calendar 
#农历每月的天数 
    var $everyCMonth=array
    0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 
    1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 
    2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 
    3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 
    4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 
    5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6), 
    6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 
    7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8), 
    8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 
    9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10), 
    10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 
    11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 
    12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1), 
    13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 
    14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 
    15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 
    16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 
    17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 
    18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 
    19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 
    20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 
    21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 
    22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 
    23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 
    24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1), 
    25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 
    26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3), 
    27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4), 
    28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5), 
    29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 
    30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 
    31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8), 
    32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 
    33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10), 
    34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 
    35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12), 
    36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 
    37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 
    38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 
    39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 
    40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5), 
    41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 
    42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7), 
    43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 
    44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9), 
    45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 
    46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11), 
    47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 
    48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1), 
    49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 
    50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 
    51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 
    52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 
    53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6), 
    54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 
    55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8), 
    56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 
    57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10), 
    58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 
    59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12), 
    60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 
    61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2), 
    62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 
    63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 
    64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5), 
    65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 
    66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7), 
    67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 
    68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9), 
    69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 
    70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11), 
    71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 
    72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1), 
    73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 
    74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 
    75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 
    76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 
    77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 
    78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 
    79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 
    80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 
    81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 
    82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 
    83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 
    84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 
    85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 
    86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3), 
    87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4), 
    88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5), 
    89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 
    90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 
    91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 
    92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 
    93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 
    94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 
    95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 
    96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1), 
    97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 
    98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3), 
    99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 
    100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5), 
    101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 
    102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7), 
    103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 
    104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 
    105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10), 
    106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 
    107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 
    108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 
    109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 
    110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 
    111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 
    112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 
    113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 
    114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 
    115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 
    116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9), 
    117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10), 
    118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11), 
    119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 
    120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1) 
    ); 
############################## 
#农历天干 
  
    var $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");    #农历地支 
    var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)"
                   "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");    #农历月份 
    var $mmonth=array("闰","正","二","三","四","五","六"
                  "七","八","九","十","十一","十二","月"); 
    var $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十"
                "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十"
                "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");#农历日 
############################## 
#赋给初值 
#天干地支 
    var $ten=0; 
    var $twelve=0; 
    function MyPub($cYear,$cMonth,$cDay
    
        $total=11;#阳历总天数 至1900年12月21日 
        $mtotal=0;#阴历总天数 
        for ($y=1901;$y<$cYear;$y++) 
        
            $total+=365; 
            if ($y%4==0) $total ++; 
        
        #再加当年的几个月 
        switch ($cMonth){ 
                 case 12: 
                      $total+=30; 
                 case 11: 
                      $total+=31; 
                 case 10: 
                      $total+=30; 
                 case 9: 
                      $total+=31; 
                 case 8: 
                      $total+=31; 
                 case 7: 
                      $total+=30; 
                 case 6: 
                      $total+=31; 
                 case 5: 
                      $total+=30; 
                 case 4: 
                      $total+=31; 
                 case 3: 
                      $total+=28; 
                 case 2: 
                      $total+=31; 
               
  
            #如果当年是闰年还要加一天 
            if ($cYear%4==0 and $cMonth>2) 
            
                $total++; 
            
  
            $total+=$cDay-1; 
  
            ############################## 
            #用农历的天数累加来判断是否超过阳历的天数 
            for($j=0;$j<=120;$j++) 
            
                $i=1; 
                for($i=1;$i<=13;$i++) 
                
                    $mtotal+=$this->everyCMonth[$j][$i]; 
                    if ($mtotal>=$total
                    
                        $flag=1; 
                        break
                    
                
                if ($flag==1)break
            
                    return array("m"=>$j,"d"=>$i,"t"=>$total,"n"=>$mtotal); 
    
    function Cal($Year,$Month,$Day
    
        $Par=$this->MyPub($Year,$Month,$Day); 
  
        $md=$this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n"]-$Par["t"]); 
        $week=($Par["t"]+5)%7; 
        if ($this->everyCMonth[$Par["m"]][0]<>0 and $this->everyCMonth[$Par["m"]][0]<$Par["d"]) 
        
                $mm=$Par["d"]-1; 
        }else
                $mm=$Par["d"]; 
        
        if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+1 and $this->everyCMonth[$Par["d"]][0]<>0) 
        
            $cMonth=$this->mmonth[0].$this->mmonth[$mm];#闰月 
        }else
            $cMonth=$this->mmonth[$mm].$this->mmonth[13]; 
        
        return array("year"=>$this->mten[$this->everyCMonth[$Par["m"]][14]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]], 
                    "month"=>$cMonth
                    "day"=>$this->mday[$md], 
                    "week"=>$week); 
    
/////调用 
$test=new Calendar; 
$Year=$test->Cal(2004,2,20); 
echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"]; 
?>


PHP阳历到农历转换的一个类 结束。
Tag:PHP教程PHP技巧,php培训,php学习,php安装电脑学习 - 编程入门 - PHP教程
PHP阳历到农历转换的一个类相关文章