0

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

如果当前时间在开始时间和结束时间之间,我想要一个返回 true 的函数,这样应用程序就不会运行。有效地“安静的时间”;

用户可以在 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。当开始时间在当天结束之前而结束时间在第二天时会出现此问题。我怎样才能让它工作?

谢谢!

4

2 回答 2

4
function fixedIsQuietTime($start, $end)
{
    if ($start < $end)
        return isQuietTime($start, $end);
    else
        return ! isQuietTime($end, $start);
}
于 2013-08-13T22:09:13.063 回答
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;
    }
}
于 2013-08-13T22:25:47.633 回答