php - 使用存储在数据库中的偏移量转换为成员时区的最佳方法?

标签 php mysql

我服务器的时区是东部时间。当我第一次构建我的成员表时,我继续要求成员在注册时设置他们的时区,以便我以后可以添加时区支持。

例如,成员(member)注册并选择东部时间作为他们的时区。数据库中的信息看起来像“-5”。

我存储的默认时间戳是 Y-m-d H:i:s 格式。现在仅使用偏移量进行转换会有多困难?我想在发布帖子时将一个时间戳(最好与偏移量一起使用的任何时区)提交到数据库中,然后在向用户显示内容时根据他们在数据库中的偏移量将其转换为用户的时区。

任何示例代码或简短教程都会很棒。

谢谢。

最佳答案

假设您做对了并且使用 MySQL 时间戳数据类型而不是 datetime 日期类型存储时间戳,您所要做的就是 SET time_zone = .... 作为 MySQL 查询, 时间戳将转换。

日期时间数据类型不会自行转换,但您可以自行转换。

不过你会遇到一些夏令时的问题。最好将时区存储为 America/New_York 等。不是数字。

请参阅 php timezone_identifiers_list() 函数,它会为您提供可能的时区列表。其结果可用于 PHP 和 MySQL。我通常从用户配置文件中加载时区,然后执行以下操作:

date_default_timezone_set('....');
mysql_query("SET time_zone = '....'");

然后一切正常。

关于php - 使用存储在数据库中的偏移量转换为成员时区的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465844/

相关文章:

php - 使用 jQuery 的 GET 请求在 IE Explorer 中不起作用

php - 使用 jquery ajax 进行编辑和更新

mysql - 为什么mysql中的like查询同时使用索引和where条件?

mysql - 想知道 opened_tables!

php - 如何在第一个数组的基础上组合两个数组

javascript - modal中从MySQL获取用户信息

php - 四舍五入到最近的 5 分钟 php mysqli

MySql LIKE '%keyword%' 开始和结束通配符 - 解决使用索引的问题

MySQL 从 2 列更新两行

Mysql子查询group by错误