转换为成员's时区的最佳方式,其偏移量存储在数据库中


Best way to convert to a member's timezone with offsets stored in database?

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

例如,一个成员注册并选择东部时间作为其时区。数据库中的信息看起来像"-5"。

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

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

谢谢。

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

datetime数据类型不会自己转换,但您可以自己转换。

你会有一些问题与日光节约时间。最好将时区存储为America/New_York之类的。不是数字。

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

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

很简单。Php有相当广泛的时区支持。

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