在特定时间之间的星期三以外的所有日子显示内容

时间:2014-09-04 02:00:03

标签: php date

除了星期三下午3点到中部标准时间之外,我每天都要尝试显示一个div。同一个星期三的午夜或晚上11:59。以下是我到目前为止无法使用的代码?这是我第一次使用if date函数,所以这对我来说都是新手。

<?php 
if (date('w') == '1' | == '2' | == '4' | == '5' | == '6' | == '0') {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
  }
else if (date('w') == 3){
 if (date('H') >= 15 && date('H') < 0) {
    //Content to show on Wednesday from 3pm to midnight 
 }
}
?>

4 个答案:

答案 0 :(得分:3)

|是按位运算符。 ||是逻辑OR运算符。

PHP operators

此外,这是您想要的更有效的版本:

if (date('w') == 3) {
    if (date('H') >= 15) {
        //Content to show on Wednesday from 3pm to midnight 
    }
} else {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
}

答案 1 :(得分:2)

你的if比较在每种情况下需要日期变量,更好的想法可能是使用临时数组来检查:

if(in_array(date('w'), array(0, 1, 2, 4, 5, 6))) {
    // info to show except Wed
} else {
    // w is 3
    if(date('H') >= 15) {
        // Content to show on Wed from 3pm to midnight
    }
}

注意:

  • 由于您已在第一个子句中指定了所有其他可能性,因此其他隐含的日期编号为3。
  • 小时永远不会小于零,但如果它在下午3点到午夜之间总是大于15,那么删除第二部分

答案 2 :(得分:1)

您与不同值进行比较的语法都是错误的。您必须重复比较,并将它们与布尔or运算符||

组合
$w = date('w');

if ($w == 1 || $w == 2 || $w == 4 || $w == 5 || $w == 6 || $w == 0) {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
} else if ($w == 3 && date('H') >= 15) {
    //Content to show on Wednesday from 3pm to midnight
}

当然,您也可以将第一个条件简化为if ($w != 3)

你的测试date('H') < 0永远不会成真 - 时钟上没有负面的时间。我想你的意思是< 24,但这是不必要的,因为所有时间都不到24小时。

答案 3 :(得分:0)

我能看到的三件事情都不正确:

  1. | ==应为|| ==,但我已简化为单if声明,因为您似乎只想知道它是否在星期三下午3点之后。
  2. 从逻辑上讲,你不能>= 15 && <0 - 所以这永远不会成真。
  3. date()函数返回一个字符串,你正在与一个整数== 3进行比较(PHP可能会很好地处理类型但是我已经在一个intval()中抛出了一个带子和括号方法)。
  4. 试试这个:

    <?php 
        if (intval(date('w')) == 3 && intval(date('H')) >= 15) {
            // it's after 3pm on a Wed...
        }
    ?>