我知道使用这个查询我可以在 mysql 服务器中设置每个会话的时间
SET SESSION time_zone = '+04:00'
问题是如何+04:00
在我的国家/地区检测 PHP 中的这一部分(由于夏令时,它可能在一年中有所不同)?
尝试使用时区名称(如America/Chicago
)而不是 +/- 一组小时。这应该考虑夏令时。
如果您还没有将 zoneinfo 加载到您的 mysql 数据库中,则需要将其加载到您的 mysql 数据库中。
我猜你可能在阿塞拜疆?如果是这样,您应该使用Asia/Baku
. 该时区在 +4:00 的标准偏移和 +5:00 的日光偏移之间交替。
请参阅时区标签 wiki中的“时区!= 偏移量”和“时区数据库” 。
如果您需要在 MySQL 中执行此操作,则需要使用mysql_tzinfo_to_sql将 IANA 时区数据库(又名“zoneinfo”)加载到 MySQL 中。感谢 datasage 和 kordirko 的提示。
但通常更好的方法是仅在数据库中存储 UTC 时间。您可以使用DateTime
和DateTimeZone
类直接在 PHP 中进行时区转换。PHP 也实现了相同的 IANA 时区数据库,您可以Asia/Baku
在PHP 的支持时区列表中找到。
打开您的 my.ini 文件。对于 Windows,它位于 /mysql/bin/my.ini 中搜索mysqld部分。在本节中输入 -
default-time-zone = '+00:00'
+00:00 是与 GMT 的偏移量。查看时区支持页面以获得更好的参考。