PHP模拟SQL Server的两个日期处理函数

来源:互联网 发布:mac远程桌面连接linux 编辑:程序博客网 时间:2024/06/05 17:15
在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢?  //文件名:date.inc.php3  //在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。  //如:  //$today=mktime(0,0,0,date("m"),date("d"),date("Y"));  /****模拟sqlserver中的dateadd函数*******  $part 类型:string  取值范围:year,month,day,hour,min,sec  表示:要增加的日期的哪个部分  $n 类型:数值  表示:要增加多少,根据$part决定增加哪个部分  可为负数  $datetime类型:timestamp  表示:增加的基数  返回 类型:timestamp  **************结束**************/function dateadd($part,$n,$datetime){$year=date("Y",$datetime);$month=date("m",$datetime);$day=date("d",$datetime);$hour=date("H",$datetime);$min=date("i",$datetime);$sec=date("s",$datetime);$part=strtolower($part);$ret=0;switch ($part) {case "year":$year+=$n;break;case "month":$month+=$n;break;case "day":$day+=$n;break;case "hour":$hour+=$n;break;case "min":$min+=$n;break;case "sec":$sec+=$n;break;default:return $ret;break;}$ret=mktime($hour,$min,$sec,$month,$day,$year);return $ret;}  /****模拟sqlserver中的datediff函数*******  $part 类型:string  取值范围:year,month,day,hour,min,sec  表示:要增加的日期的哪个部分  $date1,$date2 类型:timestamp  表示:要比较的两个日期  返回 类型:数值  **************结束*(*************/function datediff($part,$date1,$date2){//$diff=$date2-$date1;$year1=date("Y",$date1);$year2=date("Y",$date2);$month2=date("m",$date2);$month1=date("m",$date1);$day2=date("d",$date2);$day1=date("d",$date1);$hour2=date("d",$date2);$hour1=date("d",$date1);$min2=date("i",$date2);$min1=date("i",$date1);$sec2=date("s",$date2);$sec1=date("s",$date1);$part=strtolower($part);$ret=0;switch ($part) {case "year":$ret=$year2-$year1;break;case "month":$ret=($year2-$year1)*12+$month2-$month1;break;case "day":$ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24);break;case "hour":$ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600;break;case "min":$ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60;break;case "sec":$ret=$date2-$date1;break;default:return $ret;break;}return $ret;}}