用php格式化MySQL / Server时间戳?

时间:2016-02-09 13:10:47

标签: php mysql timezone

我在MySQL中创建了一个时间戳,当用户更新帐户时会更改该时间戳,并且此时间戳会在页面上回显。但它显示服务器时间而不是我当地时间。我试过,我无法在MySQL中设置时区。改变这种情况的另一种方法是什么,以及如何实施?

2 个答案:

答案 0 :(得分:0)

timestamp datatype的问题在于

  

MySQL将TIMESTAMP值从当前时区转换为UTC   存储,并从UTC返回到当前时区进行检索。   (对于其他类型,例如DATETIME,不会出现这种情况。)默认情况下,   每个连接的当前时区是服务器的时间。该   可以基于每个连接设置时区。只要时间   区域设置保持不变,您将获得存储的相同值。   如果存储TIMESTAMP值,然后更改时区和   检索值,检索的值与值不同   你存储了。

因此,你的php中的时区设置并不重要,你需要在会​​话的基础上设置mysql的时区

SET time_zone = timezone

命令,或者您需要存储客户端的时区以及时间戳,并根据存储的时区调整值。我会使用后一种方法,因为客户端在技术上可以更改时区,如果客户端从不同的时区访问时间戳数据,则mysql将返回不同的数据。

答案 1 :(得分:0)

当从数据库回显时,添加一些"过滤器"似乎做了伎俩

<?php echo $row['field name']; strtotime(date("Y-m-d", 1310571061)); ?>

如果没有上面的代码,它会将时间戳显示为:2016-02-09 00:00:00 使用上面的代码显示:2016年2月9日星期二