【发布时间】:2015-09-25 08:51:40
【问题描述】:
我有一个带有 MySQL 的 RESTful PHP 后端,它服务于 android 和 ios 客户端,我们有来自不同时区的用户,数据库中的日期是 UTC。
为了在用户当前时区显示这些日期,我花了几天时间研究,并与移动开发人员交谈,最终提出了这个建议:
1) Android 或 iOS 设备启动时,将当前设备时间发送给服务器,服务器计算两次之间的偏移量并返回给客户端,例如 -03:30
2) 客户端存储该响应 (-03:30),并将其与正在执行的每个请求一起发送到一个标头字段到后端。
3) 当 PHP 想要选择一个日期时,它会获取该请求标头值,对其进行验证并使用该值如下
"SELECT CONVERT_TZ(field,'+00:00','-03:30')"
这就是必须要做的事情的要点吗?我错过了更好的解决方案吗?
我想知道您对以上 3 个步骤的看法,特别是第一步,因为一开始我认为移动开发人员可以根据服务器时间戳执行此计算,但被拒绝了。
感谢您的帮助!
【问题讨论】:
-
由于客户端知道时区,更好的解决方案是让 API 发送 UTC 日期并让客户端将其转换为所需的时区。我不确定为什么您的移动开发人员会拒绝这样做;这就是通常的做法。
标签: php android ios mysql timezone