datetime — PHP не вычисляет правильную дату

У меня есть этот код, и он не возвращает изображения правильно, в определенное время дня мне нужно изменить изображение. Тем не менее, код не помещает правильное изображение, обложка работает, я неправильно сделал дату и время?

<?php

// H = hour
// i = minute
// n = day of the week

$dj = 'cover';
if(date("Hin", time()) == '06001'){ $dj = 'test1'; }
elseif(date("Hin", time()) == '06002'){ $dj = 'test1'; }
elseif(date("Hin", time()) == '14006'){ $dj = 'test3'; }

// 06001 = Monday at 06:00
// 06002 = Tuesday at 06:00
// 14006 = Saturday at 13:00

?>

<img class="cover" src="img/djs/<?php echo $dj; ?>.png" alt="DJ <?php echo $dj; ?>" />

0

Решение

n это не день недели. это числовое представление месяца без начальных нулей (от 1 до 12)

Я думаю, что это твоя проблема.

Если вы хотите день недели, вы должны использовать капитал N,

Таким образом, ваш код будет выглядеть так:

<?php

// H = hour
// i = minute
// N = day of the week

$dj = 'cover';
if(date("HiN", time()) == '06001'){ $dj = 'test1'; }
elseif(date("HiN", time()) == '06002'){ $dj = 'test1'; }
elseif(date("HiN", time()) == '14006'){ $dj = 'test3'; }

// 06001 = Monday at 06:00
// 06002 = Tuesday at 06:00
// 14006 = Saturday at 13:00

?>

<img class="cover" src="img/djs/<?php echo $dj; ?>.png" alt="DJ <?php echo $dj; ?>" />
0

Другие решения

Я верю в то, что вы пытаетесь сделать, это показать изображение на время между этими временами. Если это так, попробуйте следующее:

<?php
$dj = 'cover';
$day = date("N", time());
$time = (date("H") * 60) + date("i"); // current time in minutes
switch($day) {
case 1: // Monday
if($time >= 360) {
$dj = 'test1';
}
break;
case 2: // Tuesday
if($time >= 360) {
$dj = 'test1';
}
break;
case 6: // Saturday
if($time >= 840) {
$dj = 'test3';
}
break;
}
echo sprintf('<img class="cover" src="img/djs/%s.png" alt="DJ %s" />', $dj, $dj);

В этом примере изображение будет отображаться как «обложка» после каждого дня в полночь, но будет отображаться «test1» и т. Д. После предложенных периодов. Состояние $time > 360и т. д., основаны на минутах с начала дня, поэтому 360 — это 6 утра.

Поскольку (в приведенном вами примере) вы хотите показывать «тест» в понедельник и вторник, начиная с 6 часов утра, вы можете упростить код, разрешив case выполнить один и тот же код для обоих сценариев следующим образом:

<?php
$dj = 'cover';
$day = date("N", time());
$time = (date("H") * 60) + date("i"); // current time in minutes
switch($day) {
case 1: // Monday
case 2: // Tuesday
if($time >= 360) {
$dj = 'test1';
}
break;
case 6: // Saturday
if($time >= 840) {
$dj = 'test3';
}
break;
}
echo sprintf('<img class="cover" src="img/djs/%s.png" alt="DJ %s" />', $dj, $dj);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector