我正在尝试建立一个登录系统,为了重置密码或确认帐户,我有一个带有“过期日期”的列,为了让过期在任何地方都有效,我将存储在UTC时间。但我遇到了一些非常奇怪的事情。当我拿到
格式化
来自SQL和
格式化
来自PHP的UTC时间,两者都是相同的。但当我进去的时候
数字
(我不知道这种格式的真实名称是什么)它们的差别正好是7200(相当于2小时的差别)。如果有人知道为什么会这样?谢谢
下面是我用来调试的代码:
<?php
$con = mysqli_connect('localhost', 'root', '', 'clients');
updateUserUTCTime($con, 3);
$user = getUserAssocArray($con, 3);
echo $user['date_utc'];
echo '<br>';
echo gmdate("Y-m-d H:i:s", time());
echo '<br>';
echo '<br>';
echo strtotime($user['date_utc']);
echo '<br>';
echo gmdate(time());
echo '<br>';
echo '____________';
echo '<br>';
echo strtotime($user['date_utc']) - gmdate(time());
function updateUserUTCTime($con, $id=1){
$query = '
update datetests
set date_utc = UTC_TIME()
where id = '.$id.'
;';
return mysqli_query($con, $query);
}
function getUserAssocArray($con, $id=1){
$query = 'select * from datetests where id = '.$id.';';
$result = mysqli_query($con, $query);
$result = mysqli_fetch_assoc($result);
return $result;
}
输出(在我运行代码时)是:
2021-09-23 09:54:06
2021-09-23 09:54:06
1632383646
1632390846
____________
-7200
请注意,当格式化时,它们是相同的,但如果不是,它们会有7200个单位的差异。。。
附言:
在数据库中,我使用“DATETIME”类型来存储UTC_时间。
我使用以下函数获取每种语言的UTC时间:
gmdate(time()) -> PHP
UTC_TIME() -> MySQL