PHP 和 MySQL 中的时区
集成时区系统可能很复杂,并且理解 PHP 和 MySQL 中的时区可能具有挑战性。以下是帮助您有效浏览此主题的综合指南:
在数据库中存储时区
始终使用 DATETIME,而不是 TIMESTAMP 在 MySQL 中存储日期。 DATETIME 允许更大的粒度和灵活性。在将所有 PHP 时间戳存储到 MySQL 之前,将它们转换为 UTC。您可以使用如下代码:
$dateUTC = new DateTime('2023-03-08 14:30:00', new DateTimeZone('UTC'));
从数据库中检索时区
您可以使用以下代码从 MySQL 检索日期时间:
$dateRetrieved = new DateTime($row['datetime_column'], new DateTimeZone('UTC'));
转换时区
将检索到的日期时间转换为显示的用户本地时区。这可以通过以下方式完成:
$localTime = $dateRetrieved->setTimeZone(new DateTimeZone('America/Los_Angeles'));
自动夏令时 (DST) 调整
将 DateTimeZone 与 DateTime 结合使用以获得强大的功能。现代 PHP 版本包含 DateTimeZone 类,可用于根据用户选择的位置自动调整 DST:
// This will be PDT right now, UTC-7 $la = new DateTimeZone('America/Los_Angeles'); $nowish->setTimeZone($la);
避免弃用的时区
使用命名时区而不是 Etc/GMT... 时区。命名时区是更好的选择,并且在未来的 PHP 版本中不会被弃用。
旧数据处理
用于处理没有时区存储的旧数据:
结论
了解 PHP 和 MySQL 中的时区需要仔细注意数据存储、检索和转换。通过遵循此处概述的指南,您可以确保在 PHP/MySQL 应用程序中准确处理用户特定的时区。
以上是如何有效管理 PHP 和 MySQL 应用程序中的时区?的详细内容。更多信息请关注PHP中文网其他相关文章!