2012-06-07 2 views
0

Мне удалось уладить время, оставшееся на моем сайте «аукцион», однако я изо всех сил стараюсь, чтобы переменная time_left превращалась в красную, когда прошло менее 60 минут ,Разный цвет, когда время остается низким

Вот код ниже, который делает это, в данный момент времени осталось только # 333 цвет и не включается в # 9f1717

$date = date('m/d/Y h:i:s', time()); 
$date3 = new DateTime($date); 
$date4 = new DateTime($date_finished); 
$interval_date = $date3->diff($date4); 
//$time_left = $interval_date->d."d ". $interval_date->h."h ". $interval_date->i."m "; 
$time_left = (($interval_date->d) ? $interval_date->d.'d ' : ''). (($interval_date->h) ? $interval_date->h.'h ' : ''). $interval_date->i.'m '; 

$date_fini = date("d/m H:m", strtotime($date_finished)); 

if('m' < '59' && ('d'=='' && 'H' =='')){ 
    $pro_order_colour = "#9f1717"; 
} 
else{ 
    $pro_order_colour = "#333"; 
} 

ThankYou для всех и любой помощи

+0

«цвет» ... hihi – Rudie

ответ

1

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

if('m' < '59' && ('d'=='' && 'H' =='')){ 

должны, вероятно, будет что-то вроде этого:

if($m < '59' && ($d =='' && $H =='')){ 
+0

ОК, но как бы я сделал «m» в $ m? – Arken

+0

Назначьте значение как любая переменная $ m = blahblah. Код из динамической версии выполняет то, что вы хотите - все операции с строкой совершенно не нужны для вычисления этого истекшего времени. – GDP

0

Этот код не будет работать, потому что «м» не меньше, чем число, потому что это символ :)

if('m' < '59' && ('d'=='0' && 'H' =='0')){

Просто сделай это:

$date = mktime(time()); 
$date_fini = mktime(time()) + 3599; 
$timeleft = intval($date_fini - $date); //assuming $date is the current time 
if($timeleft < 3600) //3600 seconds in an hour 
{ 
$pro_order_colour = "#9f1717"; 
} else { 
$pro_order_colour = "#333"; 
} 

Убедитесь в том, замените date_fini.

+0

Привет, к сожалению, все становится красным, даже когда оставшееся время 1d 14h 34m, любые идеи почему? Спасибо за помощь – Arken

+0

@ user1136379 Вы уверены, что $ date - текущая временная метка? – Steve

+0

да оно вызывает местное время сервера – Arken

1

Хорошо, после небольшого поиска в google я попробовал функцию strpos(), чтобы увидеть, было ли объявление или h в строке time_left, если этого не было, это означало, что осталось меньше часа, поэтому я затем может изменить его на красный. Вот рабочий код.

$date = date('m/d/Y h:i:s', time()); 
$date3 = new DateTime($date); 
$date4 = new DateTime($date_finished); 
$interval_date = $date3->diff($date4); 
//$time_left = $interval_date->d."d ". $interval_date->h."h ". $interval_date->i."m "; 
$time_left = (($interval_date->d) ? $interval_date->d.'d ' : ''). (($interval_date->h) ? $interval_date->h.'h ' : ''). $interval_date->i.'m '; 

$date_fini = date("d/m H:m", strtotime($date_finished)); 
$pos = strpos($time_left, 'h'); 
$pos1 = strpos($time_left, 'd'); 
if ($pos !== false || $pos1 !== false) { 
    $pro_order_colour = "#333"; 
} else { 
    $pro_order_colour = "#9f1717"; 
} 
Смежные вопросы