0

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

<?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 数据也是这种格式(Ymd H:i:s)

编辑 2: var_dump($reqdatexx) 的返回在我的页面中看起来像这样:int(1370855859)

编辑 3:这是我想要的概念。如果数据库时间早于或在当前时间的 24 小时内 = 返回真 ELSE // 如果数据库时间超过或超过当前时间的 24 小时 = 返回假

或者,如果数据库时间 = 2013 年 6 月 8 日下午 5:02 并且当前时间 = 2013 年 6 月 9 日下午 5:01 = 返回 TRUE 否则 //数据库时间 = 2013 g/6 下午 5:02 并且当前时间 = 2013 年 6 月 9 日 5: 03pm = 返回 FALSE

4

2 回答 2

1

嗨,我不确定您到底想要什么,但对我来说,您似乎正在将时间与秒进行比较。$timenow 将以以下格式返回当前日期和时间。

mysql> SELECT NOW();
    -> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
    -> 20071215235026.000000

我建议您执行以下操作。

测试他们是否在同一日期,如果他们回声对不起

如果没有,则使用函数 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

于 2013-06-08T08:19:28.523 回答
1

如果要检查 $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';
}
于 2013-06-08T08:34:10.680 回答