PHP不计算正确的日期

时间:2016-02-13 14:11:12

标签: php datetime datetime-format

我有这个代码,而且它没有正确返回图像,在一天中的某个特定时刻我需要更改图像。但是,代码没有放入正确的图像,封面有效,我做错了日期和时间吗?

<?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; ?>" />

2 个答案:

答案 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);