php - 获得时差

时间:2011-10-18 19:49:20

标签: php time get strtotime

我使用php脚本计算两个给定时间之间的时差,您可以在此处找到:http://www.gidnetwork.com/b-16.html

我只是发现脚本有一个错误:当开始时间在午夜之前[比如说22:30]而结束时间是在午夜之后[比如说00:30],这个功能将不起作用。

你可以帮我解决这个问题吗? 这是使用的脚本:

    function get_time_difference( $start, $end )
{
    $uts['start']      =    strtotime( $start );
    $uts['end']        =    strtotime( $end );
    if( $uts['start']!==-1 && $uts['end']!==-1 )
    {
        if( $uts['end'] >= $uts['start'] )
        {
            $diff    =    $uts['end'] - $uts['start'];
            if( $days=intval((floor($diff/86400))) )
                $diff = $diff % 86400;
            if( $hours=intval((floor($diff/3600))) )
                $diff = $diff % 3600;
            if( $minutes=intval((floor($diff/60))) )
                $diff = $diff % 60;
            $diff    =    intval( $diff );            
            return( array('days'=>$days, 'hours'=>$hours, 'minutes'=>$minutes, 'seconds'=>$diff) );
        }
        else
        {
            trigger_error( "Ending date/time is earlier than the start date/time", E_USER_WARNING );
        }
    }
    else
    {
        trigger_error( "Invalid date/time data detected", E_USER_WARNING );
    }
    return( false );
}

1 个答案:

答案 0 :(得分:2)

为什么不使用getdate()功能呢?你会确定你的代码是有效的,无论你的意思是什么,说它“不会起作用”。

function get_time_difference($start, $end)
{
    $uts['start']      =    strtotime($start);
    $uts['end']        =    strtotime($end);
    if ($uts['start'] !==-1 && $uts['end'] !==-1)
    {
        if( $uts['end'] >= $uts['start'] )
        {     
            return getdate($uts['end'] - $uts['start']);
        }
        else
        {
            trigger_error("Ending date/time is earlier than the start date/time", E_USER_WARNING);
        }
    }
    else
    {
        trigger_error("Invalid date/time data detected", E_USER_WARNING);
    }
    return(false);
}