【发布时间】:2019-08-24 14:54:11
【问题描述】:
我在不同的国家有 2 家商店(比如说美国和日本)
还有一个用户在德国 GMT +2 使用我的应用程序
两家商店根据其时区给我订购日期
美国的商店位于 LA GMT -7 日本店铺位于东京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 格式并存储在数据库中。然后我使用 Mysql 的 CONVERT_TZ() 函数根据用户的时区对所有数据进行排序
【问题讨论】:
-
以任何一种格式存储日期,但确保在保存之前将它们转换为 UTC 时间(即,根据商店的时区添加或减去正确的小时数。然后当你来显示它时再次,从数据库中获取 UTC 时间,并将记录的时间从 UTC 转换为所需的任何时区