有没有办法在php中查看((当前时间 - 数据库中的时间戳)> 10分钟)?我在名为 lockout 的数据库中有一行。到目前为止,我有以下代码:
echo $row['lockout'];//returns 2013-05-12 22:04:17
echo date("Y-m-d H:i:s")//returns 2013-05-12 22:06:32
此外,有没有人知道为什么当我在我的数据库中插入当前时间戳时,它大约要休息半小时,但日期和年份是正确的?
有没有办法在php中查看((当前时间 - 数据库中的时间戳)> 10分钟)?我在名为 lockout 的数据库中有一行。到目前为止,我有以下代码:
echo $row['lockout'];//returns 2013-05-12 22:04:17
echo date("Y-m-d H:i:s")//returns 2013-05-12 22:06:32
此外,有没有人知道为什么当我在我的数据库中插入当前时间戳时,它大约要休息半小时,但日期和年份是正确的?
SQL 答案可能取决于您使用的 SQL 技术。要在 PHP 而不是 SQL 中执行此操作,您可以使用DateTime 的 diff() 方法:
$datetime1 = new DateTime($row['lockout']);
$datetime2 = new DateTime(date("Y-m-d H:i:s"));
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%i minutes');
在您的查询中执行此操作:
WHERE `lockout` < DATE_SUB(NOW(), INTERVAL 10 MINUTE)
或者,如果您不能依赖 MySQL 的时间,请使用
mysqli_query('
... WHERE `lockout` < DATE_SUB(FROM_UNIXTIME(' . time() . '), INTERVAL 10 MINUTE) ...
');
或者,如果您必须date(...)
使用 ,请使用
mysqli_query('
... WHERE `lockout` < DATE_SUB(' . date('Y-m-d H:i:s') . ', INTERVAL 10 MINUTE) ...
');
您可能想要比较 MySQL 和 PHP 的时区以及您的服务器的时区(如果 MySQL 和 PHP 位于不同的主机上)。
如果您的 SQL 方言是 MySQL 使用
... WHERE UNIX_TIMESTAMP(NOW())-lockout>=600 ...
或 PHP 中的类似内容。
在 php 中使用http://www.php.net/manual/en/book.datetime.php日期时间类 这有一个 diff 方法