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

问题描述:

对于我正在处理的iPhone聊天应用程序,我想知道如何处理所有时区问题。 我的意思是当client1向client2发送消息时,他们都会在消息旁看到正确的时间(日期)。在客户端 - 服务器应用程序中处理时间

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

  1. 客户端1将消息发送到服务器,客户端1使用它的呈现旁消息的日期本地时间。
  2. 服务器(c#)获取消息并将其保存到数据库中,同时他将消息旁边的当前时间保存为DateTime.UtcNow
  3. 当client2登录时,他从服务器收到UTC时间的消息,并将其转换为当地时间。

这样做的方法吗? 从服务器发送日期到客户端的最佳方式是什么?在服务器中,日期将作为DateTime对象保存到数据库中,我可以将其转换为什么格式以将其发送到客户端?

你有几个选择这里根据报告的时间,需要多么精确是:

  1. 如果需要,真正做到准确,我想仅仅依靠服务器时间。当您从client1发送消息到服务器时,请让服务器返回与响应中的消息关联的UTC时间。因此,我发送了消息“hello”,并在响应正文或扩展头文件中收到了UTC时间为200的OK。然后client1同时显示这个时间(转换为本地时间)和client2(转换为本地时间)。
  2. 如果准确性不那么重要,只需从client1发送消息然后使用当地的当前时间即可。您仍然可以在服务器上执行UTC事件,并使client1使用该时间,但这样您无需查看对client1消息的响应中的任何内容。

在往返发送日期方面,请查看有关NSDateFormatter的文档。您可以使用它可以轻松使用的格式,或者在服务器上执行任何最简单的操作,并使用格式化程序上的自定义dateFormat属性来随意解析。

+0

谢谢,我仍然不明白我应该从C#中的DateTime对象发送什么。例如在目标c中,我可以将Date对象转换为timeIntervalSince1970,这就是为什么我只是将这个数字解析为字符串并发送它。但在C#中,我不认为有一种方法将DateTime转换为timeIntervalSince1970。 – Eyal 2012-02-14 14:07:43

+0

我不知道C#,但这看起来很有前途:http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx。选择你理解的格式。如果你能找到一种方法将其转换为纪元时间(1970年以来的时间间隔),那么你也可以使用它。 – kevboh 2012-02-14 17:13:13