1
2//文件名:date.inc.php3
3//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。
4//如:
5//$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
6
7/****模拟sqlserver中的dateadd函数*******
8$part 类型:string
9取值范围:year,month,day,hour,min,sec
10表示:要增加的日期的哪个部分
11$n 类型:数值
12表示:要增加多少,根据$part决定增加哪个部分
13可为负数
14$datetime类型:timestamp
15表示:增加的基数
16返回 类型:timestamp
17**************结束**************/
18function dateadd($part,$n,$datetime){
19$year=date("Y",$datetime);
20$month=date("m",$datetime);
21$day=date("d",$datetime);
22$hour=date("H",$datetime);
23$min=date("i",$datetime);
24$sec=date("s",$datetime);
25$part=strtolower($part);
26$ret=0;
27switch ($part) {
28case "year":
29$year+=$n;
30break;
31case "month":
32$month+=$n;
33break;
34case "day":
35$day+=$n;
36break;
37case "hour":
38$hour+=$n;
39break;
40case "min":
41$min+=$n;
42break;
43case "sec":
44$sec+=$n;
45break;
46default:
47return $ret;
48break;
49}
50$ret=mktime($hour,$min,$sec,$month,$day,$year);
51return $ret;
52}
53
54/****模拟sqlserver中的datediff函数*******
55$part 类型:string
56取值范围:year,month,day,hour,min,sec
57表示:要增加的日期的哪个部分
58$date1,$date2 类型:timestamp
59表示:要比较的两个日期
60返回 类型:数值
61**************结束*(*************/
62function datediff($part,$date1,$date2){
63//$diff=$date2-$date1;
64$year1=date("Y",$date1);
65$year2=date("Y",$date2);
66$month2=date("m",$date2);
67$month1=date("m",$date1);
68$day2=date("d",$date2);
69$day1=date("d",$date1);
70$hour2=date("d",$date2);
71$hour1=date("d",$date1);
72$min2=date("i",$date2);
73$min1=date("i",$date1);
74$sec2=date("s",$date2);
75$sec1=date("s",$date1);
76
77$part=strtolower($part);
78$ret=0;
79switch ($part) {
80case "year":
81$ret=$year2-$year1;
82break;
83case "month":
84$ret=($year2-$year1)*12+$month2-$month1;
85break;
86case "day":
87$ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24);
88break;
89case "hour":
90$ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600;
91break;
92case "min":
93$ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60;
94break;
95case "sec":
96$ret=$date2-$date1;
97break;
98default:
99return $ret;
100break;
101}
102return $ret;
103}
模拟SQLSERVER的两个函数:dateadd(),datediff()
comments powered by Disqus