繁体   English   中英

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

[英]Adding 10 minutes to a date from mysql datetime and comparing it to the time now

我无法弄清楚如何将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分钟,我可以阻止用户尝试再次登录!

谢谢你的帮助

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

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

或更简单:

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

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

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

这样可以节省PHP的开销,即必须将日期字符串重新解析为时间值,进行加法,然后重新转换为字符串。

这是我过去的工作方式:使用php的mktime函数: http ://www.php.net/manual/zh/function.mktime.php

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

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

像这样的东西:

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

您将不得不调整“ MdY”以获得所需的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM