我想显示的内容,从数据库与日期最多提前2小时。
例子:
2018-11-09 20:00:00.000000
2018-11-08 19:00:00.000000
2018-11-06 19:00:00.000000
2018-11-06 18:00:00.000000
假设时间和日期是11月6日下午6点。我想底部的两个条目显示和两个未来的日期不显示,直到目前的时间是在2小时内的时间。
我的代码如下:
$cT = strtotime($row3['MissionTime']) - strtotime("now");
if($cT <= strtotime('-2 hours')) {
echo $row3['MissionTime']."<br>";
}
我试过几种不同的方法,但我似乎无法使它正常工作。帮助和提示?
2条答案
按热度按时间ekqde3dh1#
你的代码不起作用的原因是
strtotime
返回自unix纪元以来的秒数。当你减去strtotime
你会得到一个秒数的差异,这是你所期望的。但是,您不能将该值与strtotime('-2 hours')
因为它的输出将是2小时前的时间戳(现在是1541539906),所以测试将始终通过。你应该把它和7200比较一下(根据你的问题描述,我很确定+7200比-7200更合适)。所以改变吧至
请注意,在查询中这样做几乎肯定更好。试着在你的时间栏上添加一个条件,比如
然后您就不需要签入php了。
monwx1rj2#
strtotime()
返回以秒为单位的时间戳。减去两个时间戳可以得到这两个时间戳之间的差值(以秒为单位)。所以如果
strtotime($row3['MissionTime'])
是未来1.5小时的时间戳,你减去strtotime("now")
从中,你会得到不同的结果5400
秒(60秒60分钟1.5小时)。strtotime('-2 hours')
给出2小时前的时间戳,目前大约在15亿左右。这对你的情况不是很有用。以下是修改代码的两种方法:
如果
$row['MissionTime']
以及now
小于7200
秒(60秒60分钟2小时),$row3['MissionTime']
不是过去就是两小时之内。或者:
基本上是一样的,但是如果你不打算使用的话,可能更容易阅读
$cT
为了别的。这只是检查$row3['MissionTime']
比任何时候都要早+2 hours
.