2015-06-22 4 views
0

Я просмотрел все соответствующие должности, но не могу найти, где я иду не так. Моя цель состоит в том, чтобы отобразить изображение, если время между 6 утра и 7 вечера, а затем другое, если время падает между 7 вечера и 6 утра. Это то, что у меня есть, и теперь я просто запутался.Если время между двумя часами PHP

date_default_timezone_set('Canada/Newfoundland'); // NDT 
$current_date = date('G:i:s'); 

if ($current_date >= 19 && $current_date <= 6) { 
    echo "<img src=' $night ' />"; 
} else { 
    echo "<img src=' $day ' />"; 
} 

Всякий раз, когда я бегу, что у меня есть это всегда еще, что показывает, поэтому я считаю, что этот вопрос с тем, как я настройка времени? Заранее благодарим за предоставленную помощь.

ответ

1

Посмотрите на ваше творение Дата

$current_date = date('G:i:s'); 

вы получаете дату формата 19:13:03 так, сравнивая его с номером 19, вероятно, не будет работать очень хорошо.

  • G - 24-hour format of an hour without leading zeros
  • i - Minutes with leading zeros
  • s - Seconds, with leading zeros

Если вы просто хотите час, получаем, что

$hr = intval(date('G')); 

echo "<img src='" . ($hr >= 19 && $hr <= 6 ? $night : $day) . "' />"; 
+0

Ah! Очень хорошая точка. Спасибо. :) – FacetiousFemme

1

Использование TimeOfDay Time of Day PHP, вы форматируете текущее время в 24-часовой формат с помощью минут и секунд. Поскольку $ current_date всегда будет в формате xx: xx: xx, он никогда не будет равен 6 и 19

+0

Да, хорошо. Спасибо за ссылку! Всегда цените их! – FacetiousFemme

5
$hour = (int) date('G'); 

if ($hour >= 6 && $hour <=19) { 
    // between 6am and 7pm 
} else { 
    //between 7pm and 6am 
} 
+0

Хорошо. Так что достаточно часа. Спасибо, что помогли мне! – FacetiousFemme

+0

@FacetiousFemme да, поскольку это единственное, что вы хотите сравнить. В вашем коде вы сравниваете полную строку даты с номером –

+0

Упрощенно, ваше решение короче :) – Vhortex