标题说明了一切。我不确定我的代码有什么问题…但它并没有像我想的那样顺利。
<?php
//test this
$query = odbc_exec($conn, "SELECT * FROM changepass_req WHERE reqid = 1");
$reqdate = odbc_result($query, 'req_date');
$reqdatex = strtotime($reqdate);
$timenow = date("Y-m-d H:i:s");
$timenowx = strtotime($timenow);
if($timenowx <= $reqdatex + 86400) {
//Less than 24 hours
echo'Go a head, its not a day passed yet';
}
else {
//More than 24 hours
echo'Sorry, this request is expired!';
}
?>
数据库中的req_date
是数据类型为varchar的。提前感谢您的帮助
编辑:req_date数据也是这种格式(Y-m-d H:i:s)
编辑2:var_dump($reqdatexx)的返回在我的页面中看起来像这样:int(1370855859)
编辑3:这是我想要的概念…如果数据库时间在当前时间的24小时之前或之内=返回trueELSE//如果数据库时间超过或超过当前时间24小时= return false
,或者如果数据库时间= 2013年6月8日5:02pm和当前时间= 2013年6月9日5:01pm =返回TRUE其他的//数据库时间= 2013年6月6日5:02pm和当前时间= 2013年6月9日5:03pm= return FALSE
如果你想检查$reqdatex是否在+-24小时内,使用这个条件:
<?php
//Mon, 10 Jun 2013 09:17:39 GMT
$reqdatex = 1370855859;
$timenowx = time();
if(($reqdatex <= $timenowx + 86400) and ($reqdatex >= $timenowx - 86400)) {
//$reqdatex is inside now +- 24 hours interval
echo'Go ahead';
}
else {
//not inside the interval
echo'Sorry';
}
嗨,我不知道你到底想要什么,但对我来说,你似乎是在把时间和时间进行比较。$timenow将以下列格式返回当前日期和时间。
mysql> SELECT NOW();
-> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
-> 20071215235026.000000
我建议你这样做。
测试它们是否在同一日期,如果它们是echo对不起
如果不是,则使用函数datediff
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
-> -31
如果它大于1,那么你有超过24小时,如果它是1,那么安全起见,只是剥离时间部分从两个日期使用提取,然后比较如果当前时间更大,在这种情况下,你将有超过24小时。
的例子:mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30 22:50:50');-> 1
在这里它返回1,虽然它不是24小时所以比较23:59:59和22:50:50因为22:50:50更小它不是24小时但是如果我们有
mysql> SELECT DATEDIFF('2007-12-31 21:59:59','2007-12-30 22:50:50');
-> 1
这里比较21:59:59和22:50:50。因为22:50:50大于24小时。
请详细阅读http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html