用php格式化MySQL/服务器时间戳?

用php格式化MySQL/服务器时间戳?,php,mysql,timezone,Php,Mysql,Timezone,我在MySQL中创建了一个时间戳,当用户更新帐户时,该时间戳会发生变化,并且该时间戳会在页面上回显。但是,它显示的是服务器时间,而不是我的本地时间。我无法在MySQL中设置时区,我试过了。改变这一点的另一种方法是什么?如何实施 问题是 MySQL将时间戳值从当前时区转换为UTC,以便 存储,并从UTC返回到当前时区进行检索。 (其他类型(如DATETIME)不会出现这种情况。)默认情况下, 每个连接的当前时区是服务器的时间。这个 时区可以根据每个连接进行设置。只要时间 分区设置保持不变,则返回与

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

问题是

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

因此,php中的时区设置实际上并不重要,您需要使用

设置时区=时区


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

当从数据库回显时,一些“过滤器”似乎起到了作用

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

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

您可以设置默认时区。像这样:
date\u default\u timezone\u set('european/Lisbon')$tz=日期\默认\时区\获取()
@PathikVejani之前已经厌倦了,它不起作用:)如果你真的想用PHP修改它,你可以在插入时获得你的当前时间,并将其转换为时间戳(当然,然后插入该值),你可以检查@Armin有用的链接!谢谢但你将如何实现这一点?如果有更简单的方法,我不需要也不想修改它。实际上,只要提供正确的格式,就可以插入它。例如,2016-02-09 13:31:20,您可以得到这样的$date=date('Y-m-dh:i:s');并尝试将此值保存到DB?如果我遗漏了什么,我很抱歉……这与服务器时间或本地时间无关。这只是将同一时间格式化以不同方式显示。是的,没有人建议这样做,是吗。那么,如果我可以格式化显示的内容,为什么我要更改服务器时间。当然,这与它有关。它改变了它。只是你在问题中提出的。你不改变时间,你格式化它,这是一个巨大的差异!伙计,你读过他说的话吗?他说他不能在mysql中设置时区,他对此感到厌倦。@AboutLeros Mate,你读过我写的吗?我写了一篇文章,要么在mysql中基于连接设置时区,要么在数据库中存储客户端时区。我建议使用后一种方法!认真地如果他们不知道“改变”和“格式”之间的区别,你认为他们会得到还是能够做到D