php mysql 和移动客户端,显示从 UTC 到不同时区的日期

php mysql and mobile clients, displaying dates from UTC to different timezones

我有一个 RESTful PHP 后端 MySQL,服务于 android 和 ios 客户端,我们有来自不同时区的用户,日期在数据库中是 UTC。

为了在用户当前时区显示这些日期,我花了几天时间研究,并与移动开发人员交谈,最终提出了这个建议:

1)当Android或iOS设备启动时,将当前设备时间发送给服务器,服务器计算两次时间与returns之间的偏移返回给客户端,例如 -03:30

2) 客户端存储该响应 (-03:30),并在 header 字段中将其与它正在执行的每个请求一起发送到后端。

3) 当 PHP 想要 SELECT 一个日期时,它获取该请求 header 值,验证它并使用该值如下

"SELECT CONVERT_TZ(field,'+00:00','-03:30')"

这就是必须要做的事情的要点吗?我是否缺少更好的解决方案?

我想知道您对以上 3 个步骤的意见,特别是第一步,因为一开始我认为移动开发人员可以根据服务器时间戳执行此计算,但被拒绝了。

感谢您的帮助!

将所有日期以 UTC(GMT+0) 格式存储在数据库中,然后从数据库中将它们原样检索到客户端(phone 设备)。

然后让每个设备在收到时间戳后应用偏移量。潜在示例:

TimeZone tz = TimeZone.getDefault();
Date databaseUTCTime = getFromDB();
int offsetFromUtc = tz.getOffset(databaseUTCTime.getTime()) / 1000;

如果您想共享用户的时间,包括他们的时区,也许还存储非 UTC 的时间戳并在没有偏移的情况下转换它?

$t = date('d-m-Y H:i:s', $raw_stored_time);