Home  >  Article  >  Backend Development  >  php century perpetual calendar_PHP tutorial

php century perpetual calendar_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:06:03739browse


//Century Perpetual Calendar
#This is the only setting - please enter the location of the php file
$file=$_SERVER['PHP_SELF'];
/ /The number of days in each month of the lunar calendar
$everymonth=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)
);
/*
 *农历天干
 */
$mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
//农历地支
$mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",
               "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
//农历月份
$mmonth=array("闰","正","二","三","四","五","六",
              "七","八","九","十","十一","十二","月");
//农历日
$mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", "Twenty",
“Twenty-one”, “Twenty-two”, “Twenty-three”, “Twenty-four”, “Twenty-five”, “Twenty-six”, “Twenty-seven”, “Twenty-eight”, “Twenty-nine”, “Three” Ten");
/*
*Assign initial value
*Heavenly Stems and Earthly Branches
*/
$ten=0;
$twelve=0;
//Week
$week=5;
//Lunar calendar day
$md=0;
//Lunar calendar month
$mm=0;
//The total number of days in the Gregorian calendar to 1900 12 Month 21
$total=11;
//Total number of days in the lunar calendar
$mtotal=0;
/*
*Get the current date
*/
$today= getdate();
//If there is no input, set it to the current date
if ($year=="" or $month=="" or ($year<1901 or $year>2020)
or ($month<1 or $month>12)){
$year=$today[year];
$month=$today[mon];
}
/*
* Calculate the total number of days in the Gregorian calendar to the requested date - since December 21, 1900
* Calculate the sum of years first
*/
for ($y=1901;$y<$year;$ y++){
$total+=365;
if ($y%4==0) $total ++;
}
//Add the months of the year
switch ( $month){
case 12:
$total+=30;
case 11:
case 10:
               $total+=30;
                                                                                     9:
$total+=31;
case 8:
$total+=31;
case 7:
$total+=30;
        case 6:
                    $total+= 31;
case 5:
$total+=30;
case 4:
case 3:
           $total+=28;
             case 2:
                                                                                                                                                                                      
}
//By the way, calculate the day of the week on the 1st of the month
$week=($total+$week)%7;
/*
*Use the accumulated days of the lunar calendar to determine whether it exceeds the solar calendar The number of days
*/
$flag1=0;//Judge the conditions for jumping out of the loop
$j=0;
while ($j<=120){
$i=1;
while ($i<=13){
$mtotal+=$everymonth[$j][$i];
if ($mtotal>=$total){
$flag1=1;
               break; 🎜> }
/*
*Calculate the lunar date of the 1st of the requested month
*/
$md=$everymonth[$j][$i]-($mtotal-$total);
//The head of the month is open Number of days
$k=$week;
//Whether it spans one year
switch ($month){
case 1:
case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
              $dd=31;
              break;
         case 4:
         case 6:
         case 9:
         case 11:
              $dd=30;
              break;
         case 2:
              if ($year%4==0){
                  $dd=29;
                 }else{
                  $dd=28;
                 }
              break;
       }
//是否跨越一年
$ty=0;
if ((($everymonth[$j][0]<>0 and $i==13) or ($everymonth[$j][0]==0 and $i==12))
       and $mtotal-$total<$dd) $ty=1;
?>


世纪万年历



 //打印年月抬头
 echo "

".$year."年".$month."月

n";
 if($ty==0)
 {
  echo "

".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年

";
 }
 else
 {
  echo "

".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."/".$mten[$everymonth[$j+1][14]].$mtwelve[$everymonth[$j+1][15]]."年

";
 }
?>

 

 
   
     
     
     
     
     
     
     
   
$day=1;
$line=0;
while ($day<=$dd){
   echo "n";
   for ($s=0;$s<=6;$s++){
         if ($k<>0 or $day>$dd){
              echo "n";
              $k--;
         }else{
 //设置字符颜色
               switch ($s){
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                             $color="#000000";
                             break;
                        case 0:
                             $color="#FF0000";
                             break;
                        case 6:
                             $color="#008000";
                             break;
                      }
#生成中文农历
               if ($md==1){#1日打印月份
                    if ($everymonth[$j][0]<>0 and $everymonth[$j][0]<$i){
                        $mm=$i-1;
                    }else{
                        $mm=$i;
                    }
                    if ($i==$everymonth[$j][0]+1 and $everymonth[$j][0]<>0) $chi=$mmonth[0].$mmonth[$mm];#闰月
                    else $chi=$mmonth[$mm].$mmonth[13];
               }else{
                    $chi=$mday[$md];
               }
               echo "n";
               $day++;
               $md++;
               if ($md>$everymonth[$j][$i]){
                    $md=1;
                    $i++;
                  }
               if (($i>12 and $everymonth[$j][0]==0) or ($i>13 and $everymonth[$j][0]<>0)){
                     $i=1;
                     $j++;
                  }
           }
       }
   echo "n";
   $line++;
}
?>
 
星期日星期一星期二星期三星期四星期五星期六
 $day $chi

 


#补足空行
for ($l=1;$l<=(6-$line);$l++){
      echo "n";
      echo "n";
      echo "n";
      echo "n";
      echo "
a
n";
    }
#打印上一月,下一月
$ly=$ny=$year;
$last=$month-1;
if ($last==0){
     $last=12;
     $ly--;
   }
$next=$month+1;
if ($next==13){
     $next=1;
     $ny++;
   }
if ($ly>=1901)
echo "

<<上一个月   n";
else
echo "

";
if ($ny<=2020)
echo "下一个月>>

n";
?>
 echo "
n";
?>
 

年份:   
  月份:月    




 


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445072.htmlTechArticle? //世纪万年历 #这是唯一的设置-请输入php文件的位置 $file=$_SERVER['PHP_SELF']; //农历每月的天数 $everymonth=array( 0=array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn