2014-01-09 2 views
0

В настоящее время я работаю над программой на PHP, которая отобразит кнопку для темы. Но я не знаю алгоритм, если график составляет 15 минут до его запуска.Сравнение времени в PHP

например. тема начнется 2:30 вечера. Система будет сравнивать текущее время, если текущее время равно 2:15 PM (за 15 минут до начала темы) появится кнопка clickable, иначе она покажет сообщение для оставшегося времени.

$current_time = date('h:i A'); 
$time_start = date('h:i A', strtotime($r['time_start'])); 
$time_end = date('h:i A', strtotime($r['time_end'])); 

if($current_time is 15 mins before $time_start && $current_time < $time_end){ 
    //show clickable button 
}else{ 
    //show time remaining 
} 

enter image description here

Пожалуйста, помогите, логика/алгоритм путает меня

ответ

2

Это где объекты становятся даты и времени очень удобно:

$time_start = new DateTime($r['time_start']); 
$now = new DateTime(); 
$diff = $time_start->diff($now); 

if($diff->i < 15){ 
    // Do stuff 
} 
+0

Эй, ты работал, поэтому я выбрал свой ответ. Вы объясните мне строку, где $ diff = $ time_start -> diff ($ now) и как ее можно сравнить с 15? – dresdain

+0

Объекты DateTime имеют метод «diff». В основном, когда вы вызываете diff на объект и передаете другой объект DateTime в качестве параметра, он возвращает вам объект [DateInterval] (http://www.php.net/manual/en/class.dateinterval.php). Это содержит информацию о различии в двух датах как свойства объекта. $ diff-> y - разница в годах, $ diff -> m - разница в месяцах и т. д. ... – Scopey

2

Не сравнивать строки, сравнить временные метки , time() - твой друг.

$diff = time() - strtotime($r['time_start']); 
if($diff < 0) 
    ..too late, exam has started 
elseif($diff > 15*60) 
    ..more than 15 minutes remaining 
else 
    ..between 15 minutes and on time 

Использование DateTime также будет работать, но только главным избыточна для простого сравнения 2 основных временных меток.

-1
$time = time() 
if(($time > strtotime("2:15pm")) && ($time < strtotime("2:30pm")){ 
    //Display button 
}else{ 
    //Show time remaining 
} 
Смежные вопросы