PHP:距离日期时间还有 10 分钟


PHP: 10 minutes left to the DateTime?

如果距离 PHP 中 DateTime 的结束日期还有 10 分钟,我正在尝试找到一种方法来做某事。

但是,到目前为止我没有运气,我认为我的逻辑是错误的。 所以我需要一些帮助/建议。

我当前的代码是这样的:

$end_date= '2015-01-22 20:24:41';
$datetime1 = new DateTime();
$datetime2 = new DateTime($end_date);
$interval = $datetime1->diff($datetime2);
$finalDate = $interval->format('%d day %h hours %i minutes %s seconds');

$minutes_to_add = 10;
$time = new DateTime($end_date);
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));

echo  $time->format('Y-m-d H:i:s');
echo '<br/>';
echo  $end_date;
echo '<br/>';
if($finalDate > $time){
    echo("result_messageTi=times up");
}else{
    echo("result_messageTi=$finalDate");    
}

上面的代码中,我认为我需要在 $end_date 中添加 10 分钟,然后当$finalDate到达$end_date + 10 minutes时,它会执行我的(其他东西)......否则它将照常运行..(请注意 if/else 语句)。

但是,我知道我的登录名很差,我不知道如何解决这个问题。

所以基本上,我需要做的是正常运行代码,直到距离日期还有 10 分钟,当剩下 10 分钟或更短的时间到$finalDate时,我需要echo("result_messageTi=times up");

对不起,这个冗长的问题。

任何帮助将不胜感激。

提前谢谢。

strtotime()是这类事情的不错选择。它会将您的日期转换为以秒为单位的值。所以 10 分钟是 600 秒,可以进行向前比较。time() 以相同的形式为您提供当前时间。

所以你可以试试:

$end_date= '2015-01-22 20:24:41';
$datetime1 = time();
$datetime2 = strtotime($end_date);
$minutes_to_add = 10;
if( ($datetime2 - $datetime1) < ($minutes_to_add*60) ) {
  echo("result_messageTi=times up");
} else {
// Time is not up
}

除非我误解了,否则你不需要所有这些代码。你可以简单地做

$endTS=strtotime('2015-01-22 09:40:41');
if(time()>$endTS-600)               // 600 = 10m * 60s
  echo("result_messageTi=times up");

小提琴