我在PHP和MySQL的某个网站(新闻门户网站)上工作。我发布了一篇专栏文章。我的时区和服务器时区是GMT + 2。我想正确地向所有时区的所有客户显示时间。例如,如果新闻在我的时区13:05
处发布,则为来自GMT+3
14:05
的客户显示来自GMT+4
区域15:05
的客户的{{1} }} GMT+1
,等等。怎么做?什么是解决方案以及为此目的在MySQL数据库中存储日期和时间的最佳方法是什么?我也将Carbon整合到我的网站中,但我找不到方法。
答案 0 :(得分:0)
我们在公司所做的是我们一直存储在GMT中。即使我们在南非。然后根据用户的位置,我们将时间转换为正确显示。有许多方法可以确定用户所在的位置并转换时间,但最简单的方法是询问他们居住的位置并存储该信息。
答案 1 :(得分:0)
建立与数据库运行查询的连接之后:
SET @@session.time_zone = "+02:00";
或
SET @@session.time_zone = "Europe/Warsaw";
其中时区偏移或名称是为客户存储的值。
所有时间戳值都将从定义的时区中的查询返回。
答案 2 :(得分:0)
以UTC时区存储值在db存储区中,如下所示
date_default_timezone_set('UTC');
然后在显示值时使用任何时区js获取用户时区并使用ajax将时区发送到服务器并将其存储在SESSION变量中,并在显示日期时添加该时区。 例如 1)从https://bitbucket.org/pellepim/jstimezonedetect/src
下载时区js以下将为您提供时区
var tz = jstz.determine(); // Determines the time zone of the browser client
var timezone=tz.name(); // Returns the name of the time zone eg "Europe/Berlin"
如下所示进行ajax调用
$ .post(“scripts / set_timezone.php”,{timezone:timezone});
并且在set_timezone.php中有代码
session_start();
$_SESSION['user_timezone'] = $_POST['timezone'];
并显示如下显示
$date = new DateTime('2012-01-23 05:00:00', new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone($_SESSION['user_timezone']));//This will from the session e.g Asia/Kolkata
$time= $date->format('Y-m-d H:i:s');