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