0

我想在特定的时间间隔内显示警报,并在警报消息中等待几分钟我使用此代码,它确实有效。但我需要经过时间才能显示在消息中

如果当前时间超过晚上 11:45 或上午 00:10 之前,则应显示该消息

    $c_time = mktime();
    $s_time = strtotime('Today 11:45pm');
    $e_time = strtotime('Today 0:10am');
    if ($c_time > $s_time or $c_time < $e_time)
        $error  .= 'sorry plaese wait 30 minutes <br />';

我使用此代码,但它显示了我不知道如何使用的数字

    $c_time = mktime();
    $s_time = strtotime('Today 11:45pm');
    $e_time = strtotime('Today 0:10am');
    $elapse_time = min (abs($c_time - $s_time) , abs($e_time - $c_time ));
    if ($c_time > $s_time or $c_time < $e_time)
        $error  .= "sorry plaese wait  , $elapse_time , minutes<br />";

谢谢。

4

2 回答 2

1

Strtotime 将显示自 1970-01-01 00:00:00 以来经过的秒数的时间。所以你减去两次的结果显示为秒。您需要将其除以 60 以显示以分钟为单位的值。您可能还想在http://www.w3schools.com/php/func_date_strtotime.asp上阅读更多关于 strtotime 的内容

你可以试试下面的代码

$s_time = strtotime('Today 11:45pm');
$e_time = strtotime('Today 0:10am');

$elapse_time = ($s_time - $e_time) / 60;

if($elapse_time < 30){
   //bla bla bla
}
于 2013-11-15T10:13:18.483 回答
0

首先,您可能希望将 $elapse_time 除以 60,因为该值以秒为单位,而您需要分钟。

其次,我认为 abs($c_time-$s_time) 是晚上 11:50 的 5 分钟,而不是 20 分钟,这是您想要的结果。试试看

$elapse_time = $e_time - $c_time;
if($elapse_time < 0) $elapse_time += 86400;
$elapse_time /= 60;

甚至更好

$elapse_time = $e_time - $c_time;
if($elapse_time < 0) $elapse_time = strtotime("Tomorrow 0:10 am") - $c_time;
$elapse_time /= 60;
于 2013-11-15T10:15:38.557 回答