2014-09-05 2 views
1

Я сравниваю конечное время из моей базы данных, которая находится в 24-часовом формате (например, 3:00 = 15:00).Сравнение времени в PHP

Например, если ученик не смог отправить в назначенное время, ссылка для загрузки будет выделена серым цветом.

Я в порядке с сопоставлением даты, моя проблема - время.

Вот мой текущий код:

$date = date("Y-m-d"); 
$time = strtotime(date('G:i:s')); 
$deadtime = strtotime($r['upload_deadtime']); 

/*------$deadtime = 15:00:00 ---------*/ 

if(date($r['upload_deadline']) >= $date && $deadtime > $time){ 

echo '<td><a href="stud_prep.php">upload</a></td>';     
} 
else{ 
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 

Обновление: давайте просто забыть о сравнении дат, что я пытаюсь сказать, как я могу сравнить свое время крайнего срока (который на 24-часовом формате (например, 3:00:00 = 15:00:00)).

Вот мой текущий код:

$time = strtotime(date('G:i:s')); /*which returns 23:15:42 instead of 14:15:42 */ 
$deadtime = strtotime('15:00:00'); 


if($deadtime > $time){ 

echo '<td><a href="stud_prep.php">upload</a></td>';     
} 
else{ 
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 
+0

Можете ли вы распечатать даты, которые вы сравниваете в первую очередь, и убедитесь, что получаете то, что хотите? Не знаете, почему есть два сравнения, которые должны быть выполнены, если вам просто нужно проверить, что время публикации меньше текущего времени. – nwolybug

+1

Каково значение '$ r ['upload_deadline']'? –

+1

И какое бы значение оно ни придерживалось, это сравнение неверно. Date ($ r ['upload_deadline'])> = $ date' –

ответ

0
date_default_timezone_set('Asia/Manila'); 

$deadtime = strtotime("15:00:00"); 

if ($deadtime - time() > 0){ 
    echo '<td><a href="stud_prep.php">upload</a></td>';     
}else{ 
    echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 

Это может решить проблему времени сравнения !!

strtotime("15:00:00") будет конвертировать время в unix timestamp сегодняшних 15:00:00, а time() - текущая временная отметка unix.

+0

bro это добавлено 3 часа в наше время. я думаю, я просто взорвусь, а затем минус 3, а затем взорву его. что вы думаете? –

+0

добавлено 3 часа? что вы хотите взорвать и взорвать? каков ваш часовой пояс? Я думаю, что это проблема с часовым поясом. –

+0

Его Азии/Манилы. Я вставил этот date_default_timezone_set («Азия/Манила»); в моем коде. но он добавил 3 часа в наше время. –

0

Вы просто сравнение назад на чеке времени.

Вы проверяете, будет ли дата окончания в будущем (при условии, что сценарий всегда работает в настоящем), а затем вы проверяете, что крайний срок меньше текущего времени (IE до), в эпоху времени даты стоимость.

С проверкой, которую вы выполняете в strtotime, вам не нужно проверять даты, так как они уже включены в дату и время с помощью эпохи.

Просто сделать:

if($deadtime > $time){ 
echo '<td><a href="stud_prep.php">upload</a></td>';     
} else { 
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 

Это будет показывать только ссылку загрузки в таблицу, если время заканчивается в будущем.

EDIT:

В случае Вашего нового кода, вам просто нужно сделать DeadTime в StrToTime из даты окончания и времени от вашего Dbase. Тогда код будет работать. Вы по-прежнему сравниваете неправильный путь!

Пример:

/* deadtime = strtotime of datetimestamp in format yyyy-mm-dd G:i:s */ 
/* $time = strtotime of now. */ 
if($deadtime > $time){ 
echo '<td><a href="stud_prep.php">upload</a></td>';     
} else { 
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 
+0

не работает bro –

+0

Проверьте мои изменения с тех пор, как вы отредактировали (-а) :) –

+0

haha ​​oh я забыл. но я тестировал его с помощью <<. не работает либо –

0

Время использования PHP's DateTime::Diff

// Current Date and Time 
$date_time_now = new DateTime(); 

// Date Time values from DB (Assuming it's coming from database) 
$date_time_deadline = new DateTime('2014-09-08 15:00:00'); 


// Calculate difference 
$difference = $date_time_now->diff($date_time_deadline); 

// Output difference in human-readable format 
echo "Difference: " . $difference->format('%d days, %h hours, %i minutes, %s seconds'); 

http://php.net/manual/en/datetime.diff.php

0

Вот мой рабочий код. Думаю, ты поймешь, что я говорю.

date_default_timezone_set('Asia/Manila'); 
$time = date('H:i:s'); 
$deadline_time = date("h:i a",strtotime($r['upload_deadtime'])); 

list($hours,$mins,$secs) = explode(":",$time); 
$hours = date("H") + 9;/*-gives me wrong hours so i got to modify it-*/ 

$time_array = array($hours,$mins,$secs); 
$new_time =implode(":",$time_array); 

$deadtime = strtotime($deadline_time); 
$time_now = strtotime($new_time); 

if($r['upload_deadline'] < $date && $deadtime < $time_now){/*-compares the date and time-*/ 

echo '<td><a href="stud_prep.php">upload</a></td>'; 

} 
else{ 
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>'; 
} 
Смежные вопросы