我很难检查时间。我使用此功能在数据库中循环浏览用户以检查每个功能,以及时间是否过去1分钟。当我浏览顶级用户(ME(时,与当前时间相同(1分钟尚未通过(。其他用户是假的,他们的时间是从今天早些时候开始的(1分钟已经通过了(。但是,我的功能每次都会返回错误。
public function checkOnline($username)
{
$user = $this->load->model('user')->getUser('username', $username);
$last_active = strtotime($user['last_active']);
var_dump(date('Y-m-d g:i:s', time()) . ' ' . $user['last_active']);
var_dump(time() . ' ' . $last_active);
if (time() - $last_active > 1 * 60) {
echo 'false';
return false;
} else {
echo 'true';
return true;
}
}
var转储返回第一个用户(me(返回此。
'2018-02-04 4:49:54 2018-02-04 4:49:54'
1517798994 1517755794
其他用户的var返回此。
'2018-02-04 4:49:54 2018-02-04 3:09:03'
'1517798994 1517749743'
为什么我的功能总是返回false?
编辑:
这是我检查的循环
foreach ($users as $user) {
if ($this->checkOnline($user['username']) === true) {
$is_online = '<span class="text-green">Online</span>';
} else {
$is_online = '<span class="text-red">Offline</span>';
}
}
输出:
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 5:53:57' (length=37)
C:pathUsersController.php:125:string '1517802837 1517759637' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
C:pathUsersController.php:124:string '2018-02-04 5:53:57 2018-02-04 3:09:03' (length=37)
C:pathUsersController.php:125:string '1517802837 1517749743' (length=21)
false
您的问题源于一些不好的报告和/或日期存储。
在哪里使用
date('Y-m-d g:i:s', time())
" g" 是指
一个小时的12小时格式,没有引导零
现在,您目前的" 2018-02-04 5:53:57" 似乎比您假设与DB同一时间提前12个小时。如果我不得不猜测,实际上是您的服务器上的下午5:53。
当PHP解析日期字符串" 2018-02-04 5:53:57" 从您的DB中,它假设24小时时间并将其解释为5:53 AM。
我建议您坚持使用ISO 8601格式,如果您必须使用字符串(例如date('c')
(或更好的是将日期存储在DB中作为适当的日期/时间数据类型。
您代码中的DB层应理想地将其转换为DateTime
实例,这些实例非常容易与 diffs 一起使用。请参阅php查找两个数据时的差异