2010-09-19 52 views
0

我已经创建了一个函数来确定“offer”是否当前有效。每个报价都有一个存储在数据库中的开始和结束日期,我使用date()函数来判断它是否有效。但是,由于以下情况不会返回“TRUE”,所以出现问题。我相信它应该返回“真”。我没有得到什么?使用date()函数提供有效性

$start = 2010-9-18 
$stop = 2010-10-10 
// Current date is 2010-9-19 

function is_active($start, $stop) { 

$now = date("Y-n-d"); 

if($now >= $start && $now <= $stop) { 
return true; 
} 
} 
?> 

感谢您的帮助!

+1

您在您的日期附近失去了报价。但是更重要的是:你需要验证1970年1月1日至2038年之间的日期吗? – 2010-09-19 20:58:25

+0

不,那不需要:-) – 2010-09-20 16:12:35

回答

2

date()返回一个字符串。字符串通过字典顺序进行比较。在此订购中,9大于10,因为1<anything>出现在9<anything>之前。

一个简单的解决方法是使用Y-m-d而不是Y-n-d,并将$start记录为'2010-09-18'

$start = '2010-09-18'; 
$stop = '2010-10-10'; 
// Current date is 2010-9-19 

function is_active($start, $stop) { 

$now = date("Y-m-d"); 

if($now >= $start && $now <= $stop) { 
return true; 
} 
} 
+0

工程!非常感谢! – 2010-09-19 21:17:49

相关问题