【问题标题】:Issue In fetching for upcoming events获取即将发生的事件时的问题
【发布时间】:2014-01-20 07:35:18
【问题描述】:

所以我已经编写了用于获取未来 7 天内即将发生的事件列表的代码,它工作正常并给了我即将发生的事件列表。但问题是它也给出了过去几天的事件记录.这是我的代码:

$today = strtotime("Now"); 
echo date('Y-m-d :H:i:s',$today)."<br>"; 
$leadDate = strtotime("+7 day", $today);
echo date('Y-m-d :H:i:s',$leadDate)."<br>"; 
$rs = mysql_query("SELECT * FROM names WHERE due_date BETWEEN CURDATE() AND '$leadDate'") or die(mysql_error());
echo "<b>Dues for upcoming 7 days</b><br>";
while($row=mysql_fetch_assoc($rs))
{
    echo $row['name']." => ".$row['normal_date']."<br>";
} 

我有桌子:

id| name | due_date | normal_date
|1|name1|1390245240|Mon, 20 Jan 2014 19:14:00 GMT
|2|name2|1390331640|Tue, 21 Jan 2014 19:14:00 GMT
|4|name3|1390418040|Wed, 22 Jan 2014 19:14:00 GMT
|5|name4|1390590840|Fri, 24 Jan 2014 19:14:00 GMT
|6|name5|1390850040|Mon, 27 Jan 2014 19:14:00 GMT
|7|name6|1390936440|Tue, 28 Jan 2014 19:14:00 GMT
|8|name7|1396034040|Fri, 28 Mar 2014 19:14:00 GMT
|9|name8|1398708840|Mon, 28 Apr 2014 18:14:00 GMT
|10|name9|1390158840|Sunday, 19 Jan, 2014
|11|name10|1390072440|Saturday, 18 Jan, 2014
|12|name11|1390176000|20 Jan, 2015

服务器今天的日期是 2014 年 1 月 19 日,但它也给了我 2014 年 1 月 18 日的列表,但我正在寻找下一个 7 天的记录。我当前的脚本给了我以下输出:

2014-01-19 :20:44:30
2014-01-26 :20:44:30
Dues for upcoming 7 days
name1 => Mon, 20 Jan 2014 19:14:00 GMT
name2 => Tue, 21 Jan 2014 19:14:00 GMT
name3 => Wed, 22 Jan 2014 19:14:00 GMT
name4 => Fri, 24 Jan 2014 19:14:00 GMT
name9 => Sunday, 19 Jan, 2014
name10 => Saturday, 18 Jan, 2014
name11 => 20 Jan, 2015

那么为什么 2014 年 1 月 18 日和 2014 年 1 月 20 日出现记录,我错了。请帮忙。 提前致谢。

【问题讨论】:

    标签: php time strtotime between


    【解决方案1】:

    试试这个代码:

    $rs = mysql_query("SELECT * FROM names WHERE due_date BETWEEN '$today' AND '$leadDate'") or die(mysql_error());
    

    使用$today 代替CURDATE 函数。

    【讨论】:

    • 感谢您的回答 Broken...它解决了我前一天的 1 个问题,但您可以在我的输出中看到明年(2015 年 1 月 20 日)的日期也即将到来.
    • @user1168942 这是由于您的 unixtimestap 不正确存在 1390176000 不等于该日期再次检查时间戳。它的时间戳是1390229100。如果这对您有帮助,请将其标记为已接受。
    • 是的,我想是的..我从$str="15 Jan, 2015"; echo $h=strtotime($str);die;这个代码得到这个UNIXTIMESTAMP。这是错误的方法吗?
    • @user1168942 这是正确的方法。但您将日期设为 1 月 15 日。首先将其转换为日期格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多