我有一个MySQL数据库,有很多数据存储在UTC时间的时间戳。
当用户查询该数据库时,我希望他们能够在当地时区查看数据。
我不希望每次都要计算偏移量并使用PHP代码更改时间戳。还有别的办法吗?
您可以使用localtime()
函数获取本地时间,并从数据库中查找匹配的记录
可以这样设置每个mysql连接的时区:
SET time_zone = 'America/Los_Angeles';
或
SET time_zone = '-8:00';
但对我来说最好的解决方案是localtime();
在我工作的地方,我们支持全球客户端,并且发现将服务器的系统时间设置为UTC更容易。这允许我们确保一致的日志记录和基本服务时间戳,如果我们需要将服务器添加到不同时区的池中,我们不必担心本地时间是否设置正确(b/c它已经是UTC)。
但是,正如OP所提到的,这是有代价的,我们的应用程序必须计算时区。我们为客户端分配一个时区,登录到客户端站点的用户获得客户端的时区,因此我们每次都必须计算显示的日期/时间戳。我们偶尔会对我们的应用进行分析,但这些时区转换几乎没有记录下来。
在一天结束的时候,处理时区转换真的取决于你和你的情况。