如何从开始时间减去15分钟?

时间:2019-08-08 08:03:15

标签: php

我尝试减去15分钟。从另一个时间(开始时间)开始。 我想检查当前时间是否为15分钟。会议开始之前。

foreach($result->value as & $value) { 
    $start = $value->Start->DateTime; 
    $startmeeting = substr($start, 11, -11); //cut time to hour:minute

    $now= date('H:i', time());

    $min= strtotime('-15 minutes'); 
    $timebefor = date($startmeeting, $min); //Here I want to substract starttime with 15 min

    if( $now >= $timebefor && $now <= $startmeeting )
    {
        //Show yellow warning box
    }
}

这种方式是否有可能?

2 个答案:

答案 0 :(得分:1)

您基本上已经有了解决方案,但是它并不整洁,并且包含错​​误。我认为您想做这样的事情:

foreach ($result->value as $value) { 
    $meetingStart = strtotime($value->Start->DateTime);
    if (($meetingStart > time()) && 
        ($meetingStart < strtotime('15 minutes'))) 
    {
        //Show yellow warning box
    }
}

简而言之:如果会议是在将来举行,但距离会议不到15分钟,则必须显示黄色警告框。

编程时,请始终注意您选择的名称。请注意,我如何使用$nowPlus15Minutes来明确指出该变量包含的内容。您使用的$min并不是很容易解释。 $value$start之类的名称也存在相同的问题。也许$timebefor拼写错误?

答案 1 :(得分:1)

我建议您与此一起使用PHP:DateTime。如果您的系统使用外部API(例如Google日历),我通常也会指定时区。

$currentTime = new DateTime("now", new DateTimeZone("Asia/Singapore"));
$reminderTime = new DateTime("2019-08-08T12:00:00.0000000", new DateTimeZone("Asia/Singapore"));
$reminderTime->sub(new DateInterval("PT15M")); // PT means period time, 15 minutes.

// Comparison of DateTime is allowed from PHP 5.2.2 onwards
if($currentTime > $reminderTime) {
  // Do something
}

 // For DEBUGGING
 echo $currentTime->format('Y-m-d H:i:s') . "\n" . $reminderTime->format('Y-m-d 
 H:i:s');

有关更多信息,请参见DateTime文档。