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

时间:2015-07-07 17:47:29

标签: php android ios mysql timezone

我有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个步骤了解您的意见,特别是第一步,因为我认为移动开发人员可以根据服务器时间戳执行此计算,但被拒绝了。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

将所有日期(UTC(GMT + 0))存储在数据库中,然后将其从数据库中检索到客户端(电话设备)。

然后让每个设备在接收时间戳时应用偏移量。可能的例子:

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);