我有这个代码,而且它没有正确返回图像,在一天中的某个特定时刻我需要更改图像。但是,代码没有放入正确的图像,封面有效,我做错了日期和时间吗?
<?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 :(得分: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; ?>" />
答案 1 :(得分: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);
在此示例中,图像将显示为&#39; cover&#39;每天午夜过后,但会显示“test1&#39;建议期后。条件$time > 360
等基于从一天开始的分钟数,因此360是早上6点。
由于(在您提供的示例中),您希望显示&#39; test&#39;在星期一和星期二早上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);