我在不同国家(例如美国和日本)有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()函数根据用户的时区对所有数据进行排序
答案 0 :(得分:3)
UTC是一种更好的格式,可以将日期和时间保存在mysql中。始终根据用户区域显示此内容。
首先:转换保存在MySQL中之前的时间。
第二: 使用CAST by(在您的mysql查询中)
SELECT CAST(getdate()AS date);
希望这将使用mysql日期和时间函数解决。 有关更多信息,请查看以下内容:
答案 1 :(得分:2)
最好将日期时间保存为UTC并按照用户的时区进行显示。使用此CONVERT_TZ(orderDate,'+00:00','+02:00')