本文实例为大家分享了php阳历转农历代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
<?php function nongli( $riqi ) { //优化修改 20160807 FXL $nian = date ( 'Y' , strtotime ( $riqi )); $yue = date ( 'm' , strtotime ( $riqi )); $ri = date ( 'd' , strtotime ( $riqi )); #源码部分原作者:沈潋(S&S Lab) #农历每月的天数 $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" , "初一" , "初二" , "初三" , "初四" , "初五" , "初六" , "初七" , "初八" , "初九" , "初十" , "十一" , "十二" , "十三" , "十四" , "十五" , "十六" , "十七" , "十八" , "十九" , "二十" , "廿一" , "廿二" , "廿三" , "廿四" , "廿五" , "廿六" , "廿七" , "廿八" , "廿九" , "三十" ); ############################## #星期 $weekday = array ( "星期日" , "星期一" , "星期二" , "星期三" , "星期四" , "星期五" , "星期六" ); #阳历总天数 至1900年12月21日 $total =11; #阴历总天数 $mtotal =0; ############################## #获得当日日期 //$today=getdate(); //获取今天的日期 if ( $nian <1901 || $nian >2020) die ( "年份出错!" ); //$cur_wday=$today["wday"]; //星期中第几天的数字表示 for ( $y =1901; $y < $nian ; $y ++) { //计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和 $total +=365; if ( $y %4==0) $total ++; } switch ( $yue ) { //再加当年的几个月 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 ( $nian %4 == 0 && $yue >2) $total ++; //如果当年是闰年还要加一天 $total = $total + $ri -1; //加当月的天数 $flag1 =0; //判断跳出循环的条件 $j =0; while ( $j <=120){ //用农历的天数累加来判断是否超过阳历的天数 $i =1; while ( $i <=13){ $mtotal += $everymonth [ $j ][ $i ]; if ( $mtotal >= $total ){ $flag1 =1; break ; } $i ++; } if ( $flag1 ==1) break ; $j ++; } 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) { $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年n月j日 ")."w".$weekday[$cur_wday]." ".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年".$nlmon.$nlday; $nowday = $mten [ $everymonth [ $j ][14]]. $mtwelve [ $everymonth [ $j ][15]]. "年 " . $nlmon . $nlday ; return $nowday ; } echo nongli( '20160807' ); //标准8位 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。