PHP time function-如果时间介于两次之间,则返回True

时间:2013-08-13 22:05:11

标签: php date datetime

对不起,对于一个愚蠢的问题,这肯定是一个非常简单的答案,但我正在遭受大脑冻结!

我想要一个函数,如果当前时间在开始和结束时间之间,则返回true,这样app就不会运行了。实际上是一个“安静的时间”;

用户可以在24小时时间内设置开始时间和结束时间:

$start_time = "0300";
$end_time = "0900";

使用以下几乎可行:

function isQuietTime($start,$end)
   {
       if((date("Hm") >= $start) && (date("Hm") <= $end)) {return TRUE;} else {return FALSE;}
   }

但是如果开始时间是2300,结束时间是0600,当前时间是0300呢?上面的函数将返回false。当开始时间在当前结束之前且结束时间是第二天时,会出现问题。我如何让它工作?

谢谢!

2 个答案:

答案 0 :(得分:4)

function fixedIsQuietTime($start, $end)
{
    if ($start < $end)
        return isQuietTime($start, $end);
    else
        return ! isQuietTime($end, $start);
}

答案 1 :(得分:1)

我建议使用UNIX时间。因此编写一个函数将输入时间转换为UNIX时间。像这样:

function to_unix_time($string){
    // Something like this...
    $unix_time = mktime();
    return $unix_time;
}

function isQuietTime($start, $end){
    $now = time();
    $stime = to_unix_time($start);
    $etime = to_unix_time($end);
    if($now > $stime && $now < $etime){
        //its quiet time!
        return true;
    }
}