将此项目提炼为最简单的术语;
在MySql中处理时区偏移的最佳方法是什么?是否存在旨在处理偏移量的特定字段格式?
我需要按照以下方式运行:
SELECT DATE_FORMAT(b_stamp, '%W') AS week_day, count(*) AS b_total, b_stamp
FROM table
WHERE
(b_stamp >= DATE_SUB(NOW(), INTERVAL 7 DAY))
AND
(user_id = '$user_id') GROUP BY week_day ORDER BY b_stamp DESC
我宁愿不询问用户他们所处的时区,我认为JS是将这些数据从浏览器中提取出来的唯一方法。也许如果他们在移动设备上,并且这不是基于网络的应用程序,我可以在那里得到它,但这可能不是这个方向。
我正在考虑最好的方法是确定它们的偏移量,并将变量设置为“server_time”+/- their_offset。这使得服务器看起来好像位于不同的位置。我相信这是最好的,因为没有额外的+/-逻辑我需要添加到代码中,混淆它并使其变得丑陋。
另一方面,它将数据放入数据库中,并带有全面的时间戳。
建议?
答案 0 :(得分:1)
您可以使用javascript从客户端获取时区,如下所示:
var timeZone =(new Date()。gettimezoneOffset()/ 60)*( - 1);在使用之前打印变量并进行测试。我认为这将是你最简单的赌注。
答案 1 :(得分:0)
除了使用JS之外,您可以获取其IP地址的时区(使用类似ip2location的东西),然后使用MySQL的CONVERT_TZ()函数。