我无法弄清楚如何添加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分钟我可以停止用户尝试再次登录!
感谢您的帮助
答案 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)
查看http://www.php.net/manual/en/datetime.createfromformat.php和http://www.php.net/manual/en/datetime.add.php。
答案 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”才能获得所需的格式。