Copy CodeThe code is as follows:
PHP Lunar Calendar
###########################################
#作者: Shen Yu (S&s Lab) #
#E-mail:shenlian@hotmail.com #
#web: http://www.focus-2000.com #
# #
#版权声明: #
#作者开放版权 #
#允许无条件地使用本文件的全部或部分 #
#可作任何修改或增补 #
#如果您使用了本文件, please write an e-mail to the author #
#如有问题欢迎同作者联系 #
#谢谢您的关注! #
###########################################
/*
* Modified: Xiao Xu
*mail:san@xfocus.org
*web:http://www.xfocus.org
*
* To tell the truth, I can say nothing about the ancient calendar, the following array still do not understand but the author's mailbox doesn't seem to make sense
* Basically is leaf out, so there are errors, laughed at laughed at, hehe
*/
#农历每月的天数
$everym
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", "a", "B", "C", "Ding", "e", "own", "Geng", "Xin", "Ren", "GUI");
#农历地支
$mtwelve =array ("null", "Child (Rat)", "Ugly (ox)", "Yin (Tiger)", "Mao (Rabbit)", "Chen (Dragon)",
"(Snake)", "Noon (horse)", "Not (sheep)", "Shen (Monkey)", "Unitary (chicken)", "Xu (dog)", "Hai (pig)");
#农历月份
$mm "Leap", "positive", "two", "three", "four", "five", "six",
"Seven", "eight", "Nine", "Ten", "11", "12", "month");
#农历日
$mday =array ("null", "the Junior", "Second day", "Third Day", "four", "Duanwu", "Arrest", "When初七because", "Holidays", "Penggushan", "decade",
"11", "12", "13", "14", "XV", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30");
##############################
#星期
$weekday = Array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
#阳历总天数 to December 21, 1900
$total = 11;
#阴历总天数
$mtotal = 0;
##############################
#获得当日日期
$today =getdate ();
if ($today ["Year"]<1901 | | $today ["]>2020] die (" Error! ");
$cur _wday= $today ["Wday"];
for ($y =1901; $y < $today ["year"]; $y + +) {//The total number of days calculated to the date of the day-beginning December 21, 1900, the year of the first and
$total +=365;
if ($y%4==0) $total + +;
}
Switch ($today ["mon"]) {//plus months of the year
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 ($today ["year"]%4 = = 0 && $today ["Mon"]>2) $total + +; If it's a leap year, add one more day.
$total = $total + $today ["Mday"]-1; Plus days of the month
$flag 1=0; Determine the conditions for jumping out of a loop
$j = 0;
while ($j <=120) {//Use the number of days in the lunar calendar to determine whether to exceed the days of the Gregorian calendar
$i = 1;
while ($i <=13) {
$mtotal + = $everymonth [$j] [$i];
if ($mtotal >= $total) {
$flag 1=1;
Break
}
$i + +;
}
if ($flag 1==1) break;
$j + +;
}
if ($everymonth [$j][0]<>0 and $everymonth [$j][0]< $i) {//original wrong here, no patch for leap month
$MM = $i-1;
}
else{
$MM = $i;
}
if ($i = = $everymonth [$j][0]+1 and $everymonth [$j][0]<>0] {
$nlmon = $mmonth [0]. $mmonth [$mm]; #闰月
}
else {
$nlmon = $mmonth [$mm]. $mmonth [13];
}
#计算所求月份1号的农历日期
$MD = $everymonth [$j] [$i]-($mtotal-$total);
if ($md > $everymonth [$j] [$i])
$MD-= $everymonth [$j] [$i];
$nlday = $mday [$MD];
$nowday =date ("Y-year N-month J-Day"). $weekday [$cur _wday]. "
". $mten [$everymonth [$j][14]]. $mtwelve [$everymonth [$j][15]]." Year ". $nlmon. $nlday;
echo "$nowday";
?>
The above describes the Chinese calendar PHP implementation of the lunar calendar code, including the lunar calendar, I hope to be interested in the PHP tutorial friends helpful.