江西广告网

标题: 如何模拟SQL Server的两个日期处理函数 [打印本页]

作者: 抓耗子    时间: 2009-1-17 08:33
标题: 如何模拟SQL Server的两个日期处理函数
  //在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;    }       } <




欢迎光临 江西广告网 (http://bbs.jxadw.com/) Powered by Discuz! X3.2