2011-01-26 82 views
1

试图根据特定日期更改包含。会这样的工作:PHP包含基于日期

if (date('m/d/Y') < date('m/d/Y', strtotime("01/10/2011"))) { 
    //Display something 
} 
else if (date ('m/d/Y') >= date('m/d/Y', strtotime("01/10/2011")) && date ('m/d/Y') <= date("m/d/Y', strtotime("05/10/2011"))   
    // Display something else 
else { 
    //Display something different 
} 

如果我正确理解strtotime函数,我会认为它会工作。但我不确定我是否正确理解它。让我知道!

回答

3

date返回像2011-01-26一个字符串,你不能与任何有用的结果比较另一个字符串像2011-02-23。你需要比较由strtotimetime生产时间戳:

if (time() /* (now) */ < strtotime('2011-01-26')) ... 
0

您应该比较时间戳(什么是strtotimetime返回)而不是字符串(什么date返回)。

像这样:

if (time() < strtotime('01/10/2011')) { 
    //Display something 
} 
else if (time() >= strtotime('01/10/2011') && time() <= strtotime('05/10/2011')) 
    // Display something else 
else { 
    //Display something different 
} 

编辑:同样,使用单引号时,你不需要PHP解析他们。他们的工作速度稍快。

+1

在这样的情况下,不要一遍又一遍使用相同的参数使用相同的功能。相反,将值存储在一个变量中并使用它。一个原因是增加处理,另一个原因(这里相关)是所有3个函数调用的`time()`不相同的值。 – 2011-01-26 04:06:03

1

date返回一个字符串,当您比较该函数的返回值时,您正在比较字符串。 'm/d/Y'格式中日期的字符串比较不会按照您期望的方式比较日期(但是,如果您使用standard format则会如此)。

我建议你直接比较时间戳:

if (time() < strtotime('2011-01-01')) { /* include something */ }