从mysql datetime添加10分钟到日期并将其与现在的时间进行比较

时间:2011-09-07 14:00:23

标签: php

我无法弄清楚如何添加10分钟到我从mysql数据库获取的字段结构是datetime。

当前代码

$nowtime = date('Y-m-d h:i:s');

$timeoflastlogin = $db->gettime();

//ADD 10 MINS TO TIME LAST ATTEMPTED 
$endtime = strtotime('+ 10 minutes', $timeoflastlogin );
//$endtime = date('Y-m-d h:i:s', strtotime('+ 10 minutes', $timeoflastlogin );

显示“     2011-09-07 13:53:43<上次登录的时间     2011-09-07 03:56:15<现在时间     2611<结束时间 - 这应该是最后+10分钟的时间“

我无法解决如何从mysql添加10分钟到时间/日期,我需要这样做然后设置一个命令来比较现在和最后一次登录的时间,所以如果它已经是10分钟我可以停止用户尝试再次登录!

感谢您的帮助

4 个答案:

答案 0 :(得分:6)

$timeoflastlogin 是Unix时间戳,而是字符串 - 因此您不能将其用作strtotime的$now参数。这应该有效:

$endtime = strtotime('+ 10 minutes', strtotime( $timeoflastlogin ) );

或更容易:

$endtime = strtotime( $timeoflastlogin ) + 600; // 10 minutes == 600 seconds

答案 1 :(得分:1)

您可以直接在数据库中执行此操作:

SELECT DATE_ADD(datefield, INTERVAL 10 MINUTE)
FROM ...

这为您节省了PHP开销,即必须将日期字符串重新解析为时间值,执行添加,然后重新转换为字符串。

答案 2 :(得分:0)

答案 3 :(得分:0)

以下是我过去的做法: 使用php的mktime函数: http://www.php.net/manual/en/function.mktime.php

这允许您传递日,月,年等的值(您可以从sql时间中提取)。如果分钟数大于60,则会自动为您调整小时数。然后它将返回时间戳。

要将此时间戳恢复为sql日期格式,请使用日期函数。

有点像这样:

echo date("M-d-Y", mktime($hour, $min + 10, $sec, $month, $day, $year));

您必须调整“M-d-Y”才能获得所需的格式。