这是一个计算2000年01月01日起到指定日的天数的函数
1<br/>
(算头也算尾)日期格式为:YYYY-MM-DD
1<br/>
1
2// 计算从2000年01月01日开始到某日的天数
3
4function cal_start2end($end_day,$start_day)
5{
6
7
8$start_day=ereg_replace("-","",$start_day);
9$end_day=ereg_replace("-","",$end_day);
10
11
12
13if($end_day>=$start_day)
14{ // 截止日期大于开始日期
15if(substr($end_day,0,4)==substr($start_day,0,4))
16{
17
18if( is_int(substr($end_day,0,4)/4) )
19$leap_day=29; //leap year
20else
21$leap_day=28;
22
23
24// //同一年
25
26if(substr($end_day,4,2)==substr($start_day,4,2))
27{
28// the same month
29$endday_from_startday=$end_day-$start_day+1;
30
31}
32else
33{
34// not same month
35
36
37switch (substr($end_day,4,2))
38{
39case "01":
40$endday_from_newyear=substr($end_day,6,2)+1;
41break;
42case "02":
43$endday_from_newyear=substr($end_day,6,2)+31;
44break;
45case "03":
46$endday_from_newyear=substr($end_day,6,2)+$leap_day+31;
47break;
48case "04":
49$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;
50break;
51case "05":
52$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;
53break;
54case "06":
55$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;
56break;
57case "07":
58$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;
59break;
60case "08":
61$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;
62break;
63case "09":
64$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;
65break;
66case "10":
67$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;
68break;
69case "11":
70$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;
71break;
72case "12":
73$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;
74break;
75}
76$endday_from_startday=$endday_from_newyear;
77}
78
79return ($endday_from_startday);
80
81}
82else
83{
84// 不同年!
85
86$differ_year=substr($end_day,0,4)-substr($start_day,0,4);
87
88$how_int_4_floor=floor($differ_year/4)+1; // 向下取整
89$how_int_4_ceil=ceil($differ_year/4)+1; // 向上取整
90
91
92
93if($how_int_4_floor==$how_int_4_ceil)
94$how_leap_year=$how_int_4_floor-1;
95else
96$how_leap_year=$how_int_4_floor;
97
98$how_noleap_year=$differ_year-$how_leap_year;
99
100$differ_year2day=$how_noleap_year*365+$how_leap_year*366;
101
102
103
104if( is_int(substr($end_day,0,4)/4) )
105$leap_day=29; //leap year
106else
107$leap_day=28;
108
109
110
111if(substr($end_day,4,2)==substr($start_day,4,2))
112{
113// the same month
114$endday_from_startday=$differ_year2day+ substr($end_day,4,2);
115
116}
117else
118{
119// not same month
120
121
122switch (substr($end_day,4,2))
123{
124case "01":
125$endday_from_newyear=substr($end_day,6,2)+1;
126break;
127case "02":
128$endday_from_newyear=substr($end_day,6,2)+1+31;
129break;
130case "03":
131$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31;
132break;
133case "04":
134$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;
135break;
136case "05":
137$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;
138break;
139case "06":
140$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;
141break;
142case "07":
143$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;
144break;
145case "08":
146$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;
147break;
148case "09":
149$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;
150break;
151case "10":
152$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;
153break;
154case "11":
155$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;
156break;
157case "12":
158$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;
159break;
160} //End of switch
161
162
163$endday_from_startday=$endday_from_newyear+$differ_year2day;
164} //End of not same month
165
166
167
168return ($endday_from_startday);
169
170
171} //End of year
172} //End of $end_day>=$start_day
173
174
175
176} //End of function
177
178
179$start_day="2000-01-01";
180
181$end_day="2011-01-01";
182
183echo "您输入的是:".$end_day."
``` \n"; $endday_from_startday=cal_start2end($end_day,$start_day);
echo "该日距离$start_day 共 ".$endday_from_startday." 天";
``` ```
``` ```
``` ```
``` 时间太少了,那位大虾可以修改为计算任意两日期之间的间隔最好!!!!!