Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按用户时区顺序显示不同时区的日期时间_Php_Mysql_Datetime - Fatal编程技术网

Php 按用户时区顺序显示不同时区的日期时间

Php 按用户时区顺序显示不同时区的日期时间,php,mysql,datetime,Php,Mysql,Datetime,我在不同的国家有两家店,比如说美国和日本 还有一个在德国GMT+2使用我的应用程序的用户 两家商店根据时区给我下订单的日期 这家美国商店位于洛杉矶格林尼治标准时间7点 日本的商店位于东京GMT+9 让我们假设两个订单同时售出 我想按照德国时区的顺序向用户显示订单 我的问题是如何将订单日期存储在mysql timestamp int或datetime中,以及如何将这些日期转换为用户的时区 -编辑- 对于那些想要将时间戳转换为带时区的日期时间的人 $timestamp = 1

我在不同的国家有两家店,比如说美国和日本

还有一个在德国GMT+2使用我的应用程序的用户

两家商店根据时区给我下订单的日期

这家美国商店位于洛杉矶格林尼治标准时间7点 日本的商店位于东京GMT+9

让我们假设两个订单同时售出

我想按照德国时区的顺序向用户显示订单

我的问题是如何将订单日期存储在mysql timestamp int或datetime中,以及如何将这些日期转换为用户的时区

-编辑-

对于那些想要将时间戳转换为带时区的日期时间的人

            $timestamp = 1554280893 ;
            $datetimeFormat = 'Y-m-d H:i:s';

            $date = new DateTime("America/New_York");

            $date->setTimestamp($timestamp);

$utc=new DateTime($date->format($datetimeFormat),new DateTimeZone("America/New_York"));

            $utc->setTimezone(new DateTimeZone("UTC"));

            echo  $utc->format("Y-m-d H:i:s");

我将所有时间戳转换为UTC格式并存储在db中。然后我使用Mysql的CONVERT_TZ函数根据用户的时区对所有数据进行排序

最好将日期时间保存为UTC,并根据用户的时区显示。在SQL查询中使用此Convert转换日期时间,“+00:00”和“+02:00”

UTC是在mysql中保存日期和时间的更好格式。始终根据用户的区域显示此信息

第一:转换保存到MySQL之前的时间

第二: 在mysql查询中使用CAST by

选择CASTgetdate作为日期

希望通过mysql的日期和时间函数可以解决这个问题。 有关更多信息,请查看以下内容:


以任意一种格式存储日期,但确保在保存之前将其转换为UTC时间,即根据存储的时区添加或减去正确的小时数。然后,当您再次显示它时,从数据库中获取UTC时间,并将记录的时间从UTC转换为所需的任何时区。此查询在我的情况下运行良好,在您的场景中也可以。