根据用户的时区依次显示具有不同时区的日期时间

时间:2019-04-03 07:06:16

标签: php mysql datetime

我在不同国家(例如美国和日本)有2家商店

在德国格林尼治标准时间+2上使用我的应用程序的用户

两家商店根据时区给我订购日期

美国商店位于LA GMT -7 JAPAN中的商店位于东京GMT + 9

假设同时出售两个订单

我想按德国时区向用户显示订单

我的问题是我应该如何在mysql中存储订单日期(时间戳(int)或日期时间),以及如何将这些日期转换为用户的时区

-编辑-

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

            $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()函数根据用户的时区对所有数据进行排序

2 个答案:

答案 0 :(得分:3)

UTC是一种更好的格式,可以将日期和时间保存在mysql中。始终根据用户区域显示此内容。

首先:转换保存在MySQL中之前的时间。

第二:  使用CAST by(在您的mysql查询中)

  

SELECT CAST(getdate()AS date);

希望这将使用mysql日期和时间函数解决。 有关更多信息,请查看以下内容:

mysql date and time functions

答案 1 :(得分:2)

最好将日期时间保存为UTC并按照用户的时区进行显示。使用此CONVERT_TZ(orderDate,'+00:00','+02:00')

在SQL查询中转换日期时间