gpt4 book ai didi

php - 使用用户时区的 MySQL 和 PHP

转载 作者:行者123 更新时间:2023-11-29 02:03:08 25 4
gpt4 key购买 nike

我在 MySQL DATETIME 字段中以 UTC 时区存储时间。我想将所有这些(在 PHP 中使用它们时)转换为用户定义的时区。我知道我可以用 php DateTime::setTimezone 做到这一点,但它需要为它们中的每一个都做到这一点。

是否有某种全局方式告诉 php 所有来自 mysql 的日期时间都是 UTC 并自动将它们转换为用户时区?

最佳答案

当您将它们存储到数据库中时,将表列存储为 unix 时间戳。这些都是 UTC。然后只需应用您想要的任何用户指定的偏移量。

这是一个有趣的 StackOverflow question这可能会对您有所帮助。

您还可以使用 MySQL Unix_Timestamp function通过在进行比较时生成正确的 int 来轻松查询数据。

编辑:如果您确定每次使用它们时都想从数据库中转换所有日期时间,只需编写一个简单的函数来获取日期时间并为用户添加正确的偏移量,然后每次您选择一个日期时间时只需调用该函数从数据库。像下面的代码:

<?php

// Assuming that $_SESSION['UserOffset'] is storing the user's timezone eg
// $_SESSION['UserOffset'] = new DateTimeZone("Europe/Prague");

function convert_time_zone($timeFromDatabase_time)
{
$userTime = new DateTime($timeFromDatabase, new DateTimeZone('UTC'));
$userTime->setTimezone(new DateTimeZone($_SESSION['UserOffset']));
return $userTime->format('Y-m-d H:i:s');
// or return $userTime; // if you want to return a DateTime object.
}


?>

关于php - 使用用户时区的 MySQL 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com