Py学习  »  DATABASE

MySQL和PHP UTC时间在数字格式时不同

Soulss • 3 年前 • 1392 次点击  

我正在尝试建立一个登录系统,为了重置密码或确认帐户,我有一个带有“过期日期”的列,为了让过期在任何地方都有效,我将存储在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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133892
 
1392 次点击  
文章 [ 1 ]  |  最新文章 3 年前