对于我正在开发的iPhone聊天应用程序,我想知道如何处理所有时区问题。我的意思是,当客户端1向客户端2发送消息时,他们都会在消息旁边看到正确的时间(日期)。
到目前为止,这就是我认为我需要做的:
- 客户端1向服务器发送消息,客户端1使用其本地时间显示消息旁边的日期
- 服务器(c#)获取消息并将其保存到数据库中,同时使用
DateTime.UtcNow
将当前时间保存在消息旁边 - 当client2登录时,他从服务器获得UTC时间的消息,并将其转换为本地时间
这样做吗?将日期从服务器发送到客户端的最佳方式是什么?在服务器中,日期作为DateTime
对象保存到数据库中,我可以将其转换为什么格式以发送到客户端?
根据报告时间的准确程度,这里有几个选项:
- 如果它需要真正准确,我只会依赖服务器时间。当您从客户端1向服务器发送消息时,请让服务器在其响应中返回与该消息关联的UTC时间。因此,我发送了消息"hello",并在响应体或扩展头中收到了一个200 OK,其中包含UTC时间。然后客户端1显示这个时间(转换为本地时间),客户端2显示相同的时间(转换成本地时间)
- 如果准确性不那么重要,那么只需从客户端1发送消息,然后使用您当地的当前时间就更容易了。您仍然可以在服务器上执行UTC操作,并让客户端1使用该时间,但这样您就不需要查看对客户端1消息的响应中的任何内容
关于来回发送日期,请查看NSDateFormatter上的文档。您可以使用一种易于使用的格式,也可以在服务器上执行任何最简单的操作,并在格式化程序上使用自定义dateFormat
属性进行解析。