0

我试图仅在一段时间或几天内显示一些内容我在数据库中有开始时间、开始日期、结束时间和结束日期,这样当从数据库中获取数据时,应该检查这个时间和日期并相应地显示内容

我尝试过的代码

$startDateTime = strtotime($result['StartDate']." ".$result['StartTime']);
$endDateTime = strtotime($result['EndDate']." ".$result['EndTime']);
$now = time();

echo "START : ".$startDateTime;
echo "<br/>END : ".$endDateTime;
echo "<br/>CURRENT : ".$now;
if($now >= $startDateTime && $now <= $endDateTime){
echo $result['content'];

}

但它每次都无法显示内容

请帮我

提前致谢

4

2 回答 2

0

而不是使用 time() 函数 - 尝试将 '$now' 创建为 strtotime("now")。

此外,作为调试步骤,它可能会帮助您回显比较以查看它们是否按照您预期的方式进行评估。

实际上-我只是按原样尝试了您的代码...除了我对开始和结束日期和时间进行了硬编码值。它起作用了,所以切换到使用 strtotime("now") 可能不会有什么不同。

打印出来的值是什么?你没有告诉我们。

所以 VoronoiPotato 可能是正确的......您为 StartDate/StartTime 和 EndDate/EndTime 存储的值一定有问题。

如果您像这样更改程序(以添加更多调试),程序的输出是什么:

$startDateTime = $result['StartDate'] . " " . $result['StartTime'];
$endDateTime = $result['EndDate'] . " " . $result['EndTime'];
$now = time();

echo "START : " . $startDateTime."<br />\n";
echo "END : " . $endDateTime . "<br />\n";

$startDateTime = strtotime($startDateTime);
$endDateTime = strtotime($endDateTime);

echo "Start as time: " . $startDateTime . "<br />\n";
echo "End as time: " . $endDateTime . "<br />\n";

echo "CURRENT : " . $now . "\n";

if (($now >= $startDateTime) && ($now <= $endDateTime)) {
    echo $result['content'];
}
于 2012-08-06T12:34:05.113 回答
0

输出你的 $result['StartDate'] 的列表。" ".$result['StartTime'] 我想你会发现它可能会遗漏前导 0 或其他东西,这会给它作为时间的转换带来麻烦。

于 2012-08-06T12:34:15.003 回答