今天很无聊,随便在网上乱逛,看到很多论坛的程序都提供漂亮的含有农历的日历,查阅了一些资料,改写了以下,编写如下的一个计算农历日期的类,希望有用,有谁知道有现成的月历表代码的话,不妨留个言.
<?
php
class
ChineseCalendar{
#
农历每月的天数
private
static
$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
)
);
#
#############################
#
农历天干
private
static
$mten
=
array
(
"
null
"
,
"
甲
"
,
"
乙
"
,
"
丙
"
,
"
丁
"
,
"
戊
"
,
"
己
"
,
"
庚
"
,
"
辛
"
,
"
壬
"
,
"
癸
"
);
#
农历地支
//private static $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)","午(马)",
//"未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
private
static
$mtwelve
=
array
(
"
null
"
,
"
子,鼠
"
,
"
丑,牛
"
,
"
寅,虎
"
,
"
卯,兔
"
,
"
辰,龙
"
,
"
巳,蛇
"
,
"
午,马
"
,
"
未,羊
"
,
"
申,猴
"
,
"
酉,鸡
"
,
"
戌,狗
"
,
"
亥,猪
"
);
#
农历月份
private
static
$mmonth
=
array
(
"
闰
"
,
"
正
"
,
"
二
"
,
"
三
"
,
"
四
"
,
"
五
"
,
"
六
"
,
"
七
"
,
"
八
"
,
"
九
"
,
"
十
"
,
"
十一
"
,
"
十二
"
,
"
月
"
);
#
农历日
private
static
$mday
=
array
(
"
null
"
,
"
初一
"
,
"
初二
"
,
"
初三
"
,
"
初四
"
,
"
初五
"
,
"
初六
"
,
"
初七
"
,
"
初八
"
,
"
初九
"
,
"
初十
"
,
"
十一
"
,
"
十二
"
,
"
十三
"
,
"
十四
"
,
"
十五
"
,
"
十六
"
,
"
十七
"
,
"
十八
"
,
"
十九
"
,
"
二十
"
,
"
廿一
"
,
"
廿二
"
,
"
廿三
"
,
"
廿四
"
,
"
廿五
"
,
"
廿六
"
,
"
廿七
"
,
"
廿八
"
,
"
廿九
"
,
"
三十
"
);
#
#############################
#
星期
private
static
$weekday
=
array
(
"
星期日
"
,
"
星期一
"
,
"
星期二
"
,
"
星期三
"
,
"
星期四
"
,
"
星期五
"
,
"
星期六
"
);
#
#############################
/*
*
* 返回指定日期的农历日期数组对象
* @example
* <code>
* require_once('calendar-fns.php');
* $date=ChineseCalendar::getChineseCalendar(getdate());
* </code>
*
* @param 日期 $date
* @return 农历日期数组,格式为:(天干,地支,生肖,月,日,星期),例如:丙,戌,狗,十二月,十八,星期一
*/
public
static
function
getChineseCalendar(
$date
){
//
$today=getdate();
#
阳历总天数 至1900年12月21日
$total
=
11
;
#
阴历总天数
$mtotal
=
0
;
$today
=
$date
;
if
(
$today
[
"
year
"
]
<
1901
||
$today
[
"
year
"
]
>
2020
)
die
(
"
年份出错!
"
);
$cur_wday
=
$today
[
"
wday
"
];
for
(
$y
=
1901
;
$y
<
$today
[
"
year
"
];
$y
++
) {
//
计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和
$total
+=
365
;
if
(
$y
%
4
==
0
)
$total
++
;
}
switch
(
$today
[
"
mon
"
]) {
//
再加当年的几个月
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
++
;
//
如果当年是闰年还要加一天
$total
=
$total
+
$today
[
"
mday
"
]
-
1
;
//
加当月的天数
$flag1
=
0
;
//
判断跳出循环的条件
$j
=
0
;
while
(
$j
<=
120
){
//
用农历的天数累加来判断是否超过阳历的天数
$i
=
1
;
while
(
$i
<=
13
){
$mtotal
+=
self
::
$everymonth
[
$j
][
$i
];
if
(
$mtotal
>=
$total
){
$flag1
=
1
;
break
;
}
$i
++
;
}
if
(
$flag1
==
1
)
break
;
$j
++
;
}
if
(self
::
$everymonth
[
$j
][
0
]
<>
0
and self
::
$everymonth
[
$j
][
0
]
<
$i
){
//
原来错在这里,对闰月没有修补
$mm
=
$i
-
1
;
}
else
{
$mm
=
$i
;
}
if
(
$i
==
self
::
$everymonth
[
$j
][
0
]
+
1
and self
::
$everymonth
[
$j
][
0
]
<>
0
) {
$nlmon
=
$mmonth
[
0
]
.
$mmonth
[
$mm
];
#
闰月
}
else
{
$nlmon
=
self
::
$mmonth
[
$mm
]
.
self
::
$mmonth
[
13
];
}
#
计算所求月份1号的农历日期
$md
=
self
::
$everymonth
[
$j
][
$i
]
-
(
$mtotal
-
$total
);
if
(
$md
>
self
::
$everymonth
[
$j
][
$i
])
$md
-=
self
::
$everymonth
[
$j
][
$i
];
$nlday
=
self
::
$mday
[
$md
];
//
丙,戌,狗,十二月,十八,星期一
//array(6) { [0]=> string(3) "丙" [1]=> string(3) "戌" [2]=> string(3) "狗" [3]=> string(9) "十二月" [4]=> string(6) "十八" [5]=> string(9) "星期一" }
$tmp
=
explode
(
'
,
'
,
self
::
$mtwelve
[self
::
$everymonth
[
$j
][
15
]]);
return
array
(
self
::
$mten
[self
::
$everymonth
[
$j
][
14
]]
,
//
天干
$tmp
[
0
]
,
//
地支
$tmp
[
1
]
,
//
生肖
$nlmon
,
//
农历月
$nlday
,
//
农历日
self
::
$weekday
[
$cur_wday
]
//
星期
);
}
}
?>