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
*/
#农历每月的天数
$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", "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)");
#农历月份
$mmonth =array ("Leap", "positive", "two", "three", "four", "Five", "VI",
"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";
?>
http://www.bkjia.com/PHPjc/317838.html www.bkjia.com true http://www.bkjia.com/PHPjc/317838.html techarticle Copy the code code as follows: PHP lunar calendar? ########################################### #作者: Shen Yu (snbsp; LAB) # #E-mail:shenlian@hotmail.com# #web: http://www.focus-2000.com# # # ...