如果时间超过24小时,用当前时间验证数据库中存储的时间戳


Validate timestamp stored in the database with the current time if passed 24 hours

标题说明了一切。我不确定我的代码有什么问题…但它并没有像我想的那样顺利。

<?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