Home >Backend Development >PHP Tutorial >date.inc.php3,模拟SQLSERVER的两个函数:dateadd(),datediff()_PHP

date.inc.php3,模拟SQLSERVER的两个函数:dateadd(),datediff()_PHP

WBOY
WBOYOriginal
2016-06-01 12:28:331012browse

SQL Server

//文件名: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;
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn