Chinese calendar code to implement the lunar calendar under PHP

Source: Internet
Author: User
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.

  • Related Article

    Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.