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