PHP 没有计算正确的日期
PHP Not calculating correct date
我有这段代码,它没有正确返回图像,在一天中的某个时间我需要更改图像。但是,代码没有放入正确的图像,封面有效,我是否输入了错误的日期和时间?
<?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; ?>" />
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; ?>" />
我相信您想要做的是在这些时间之间的持续时间内显示图像。如果是这种情况,请尝试以下操作:
<?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);
在此示例中,图像将在每天午夜后显示为 'cover',但在建议的时间段后将显示为 'test1' 等。条件$time > 360
等都是以一天开始的分钟数为准,所以360就是早上6点。
因为(在您提供的示例中),您希望在星期一和星期二早上 6 点开始显示 'test',您可以通过允许 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);
我有这段代码,它没有正确返回图像,在一天中的某个时间我需要更改图像。但是,代码没有放入正确的图像,封面有效,我是否输入了错误的日期和时间?
<?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; ?>" />
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; ?>" />
我相信您想要做的是在这些时间之间的持续时间内显示图像。如果是这种情况,请尝试以下操作:
<?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);
在此示例中,图像将在每天午夜后显示为 'cover',但在建议的时间段后将显示为 'test1' 等。条件$time > 360
等都是以一天开始的分钟数为准,所以360就是早上6点。
因为(在您提供的示例中),您希望在星期一和星期二早上 6 点开始显示 'test',您可以通过允许 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);