2015-01-22 4 views
-1

Я пытаюсь найти способ сделать что-то, если 10 минут осталось до даты DateTime в PHP.PHP: 10 минут осталось до DateTime?

Однако до сих пор мне не повезло, и я думаю, что моя логика ошибочна. поэтому мне нужна помощь/совет.

мой текущий код заключается в следующем:

$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");  
} 

в приведенном выше коде, я думал, что мне нужно добавить 10 минут до $ датой_окончания, а затем, когда $finalDate достигает $end_date + 10 minutes, он будет выполнять свою (другие вещи) ... в противном случае это будет работать как обычно .. (, пожалуйста, отметьте, если/else-заявления).

Однако, я знаю, что мой логин отключен, и я не могу понять, как решить эту проблему.

поэтому в основном то, что мне нужно сделать, это запустить код в обычном режиме до тех пор, пока 10 минут осталось до даты и когда есть 10 минут или меньше остается на $finalDate, мне нужно echo("result_messageTi=times up");

извините за длинный вопрос.

любая помощь будет оценена.

Заранее спасибо.

+0

а) вы сравниваете неправильные переменные (двойной проверки того, что '$ finalDate' на самом деле!), Б) вы добавляете 10 минут в заблуждении (вы хотите 10 минут ** до ** вашего времени, а не после). – deceze

ответ

1

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 
} 
+0

ценим это бутон ... это хорошо. Я уверен, что другой ответ будет работать, но я выбрал ваш, потому что я понимаю его лучше, хотя в другом ответе меньше кода! lol .. показывает, как перепуталась моя голова ...: D – william

1

Если я не понял, что вам не нужно весь код. Вы можете просто сделать

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

Fiddle

Смежные вопросы