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

时间:2011-09-19 02:09:12

标签: php mysql

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

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

非常简单。 Php拥有相当广泛的时区支持。

http://www.php.net/manual/en/class.datetime.php

答案 1 :(得分:1)

假设您做了正确的事情并使用MySQL时间戳数据类型而不是日期时间日期类型存储时间戳,您只需SET time_zone = ....作为MySQL查询,时间戳将转换。

日期时间数据类型不能自行转换,但您可以自己转换它们。

虽然夏令时会有一些问题。最好将时区存储为America / New_York,以及类似的东西。不是数字。

请参阅php timezone_identifiers_list()函数,该函数将为您提供可能的时区列表。结果可以与PHP和MySQL一起使用。我通常从用户配置文件加载时区,然后执行:

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

然后一切正常。