【问题标题】:Mysql is not converting timestamp to the timezone of PHP queryMysql 没有将时间戳转换为 PHP 查询的时区
【发布时间】:2026-01-08 14:40:03
【问题描述】:

I have a mysql database in this format

我正在尝试通过 php 文档获取值并将它们转换为用户所在时区的 json(或者可能只是 GMT-6 就足够了),但是 php 文档的 json 输出如下:

[{"timestamp":"2018-06-13 19:52:05","temperature":"79.83","humidity":"41.89","pressure":"99.35"},{"timestamp":"2018-06...

仍然是UTC时间,我已经尝试添加

date_default_timezone_set('America/Los_Angeles');

到了php文件,但是时间一直没变,请问怎么解决?

【问题讨论】:

  • 那是因为您需要获取它们并使用适当的功能设置日期,另一种方法是更改​​ MySQL 服务器的时区
  • PHP 将来自数据库的时间戳视为字符串,它不会将它们解析为时间,因此它不会进行任何时区处理。
  • 为什么不在sql server上设置时区?

标签: php mysql sql datetime timestamp-with-timezone


【解决方案1】:

在查询中的时间戳上使用convert_tz() 将它们从一个时区转换为另一个时区,例如:

... convert_tz(`timestamp`, 'Etc/UTC', 'America/Los_Angeles') ...

确保按照"5.1.12 MySQL Server Time Zone Support" 中所述的“填充时区表”过程来获得可用时区或检查系统中可用的时区。

【讨论】:

  • Etc 应该是UTC
  • @Barmar:我不知道 OPs 系统中有哪些名称可用,这只是一个示例。我关注了that list,它是Etc/UTC。但只是 UTC 也可能有效。
最近更新 更多