在客户端 - 服务器应用程序中处理时间

时间:2012-02-14 13:40:01

标签: c# objective-c timezone timestamp utc

对于我正在研究的iPhone聊天应用,我想知道如何处理所有时区问题。 我的意思是如何在client1向client2发送消息时,它们都会看到消息旁边的正确时间(日期)。

到目前为止,这是我认为我需要做的事情:

  1. Client1向服务器发送消息,client1使用当地时间显示消息旁边的日期。
  2. 服务器(c#)获取消息并将其保存到数据库,同时他使用DateTime.UtcNow保存消息旁边的当前时间。
  3. 当client2登录时,他从服务器获取带有UTC时间的消息,并将其转换为当地时间。
  4. 这是这样做的方法吗? 将日期从服务器发送到客户端的最佳方法是什么?在服务器中,日期作为DateTime对象保存到数据库,我可以将其转换为什么格式将其发送到客户端?

1 个答案:

答案 0 :(得分:2)

根据报告时间的准确程度,您有几个选择:

  1. 如果它需要非常准确,我只会依赖服务器时间。当您从client1将消息发送到服务器时,让服务器返回与其响应中的消息关联的UTC时间。所以我发送了消息“hello”并在响应正文或扩展标题或其他内容中接收了带有UTC时间的200 OK。然后client1显示此时间(转换为本地时间)和client2同时(转换为本地时间)。
  2. 如果准确性不那么重要,那么从client1发送消息然后使用本地当前时间会更容易。您仍然可以在服务器上执行UTC操作并让client1使用该时间,但这样您就不需要查看对client1消息的响应中的任何内容。
  3. 就来回发送日期而言,请查看NSDateFormatter上的文档。您可以使用它可以轻松使用的格式或在服务器上执行最简单的格式,并使用格式化程序上的自定义dateFormat属性进行解析。