模拟SQLSERVER的两个函数:dateadd(),datediff()

  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}   
Published At
Categories with Web编程
Tagged with
comments powered by Disqus