如何在系统中处理全局time_zone?

时间:2016-04-13 12:38:21

标签: c# asp.net wcf-ria-services

我正在处理名为Activity的模块,用户可以在任何国家/地区进行任何活动,例如您在Facebook或其他社交媒体网站上发表评论。每当评论发生时,全球每个用户都会看到该评论刚刚发生。

问题:我有WCF API,它将以UTC时间格式存储数据。可以从IPad,IPhone和其他设备访问API。我必须在日常活动计数中作出回应。用户将处于不同的时区,因此活动计数将与不同的时区不同。比如CST时间是-06:00偏移量和IST时间+05:300偏移量。如何根据不同的时区从服务器中查找计数。每当他们要求从服务器检索数据时,他们都不会规定任何时区。如何处理这种情况。

使用datetimeOffset会有什么不同吗?可以将datetimeOffset解析为JSON吗?

由于 奇拉格。

2 个答案:

答案 0 :(得分:1)

  1. 您可以将UTC时间转换为服务器上的本地时间。这要求客户端在请求中包含它的本地时区。这将允许服务器发回客户端本地时区的时间戳。

    DateTimeOffset类在服务器端有帮助。 DateTime类只能表示服务器本地时间内的UTC和“本地”时间。 DateTimeOffset允许您使用任何偏移量表示时间,但时区是信息的一部分。时区定义了夏令时等规则,这些规则不属于DateTimeOffset中存储的信息。

  2. 或者您可以将UTC时间转换为客户端上的本地时间。服务器响应中的时间戳始终为UTC,但客户端知道它自己的时区,并在显示时间戳之前执行转换。

  3. 在大多数情况下,我认为2.是最简单的解决方案,但这需要客户端有关于时区的信息,而且信息非常复杂。

答案 1 :(得分:1)

我在我的系统中使用ISO 8601来节省时间。 在那里,您将包含时区信息。

https://en.wikipedia.org/wiki/ISO_8601

在.net中,它是“o”或“o”。 https://msdn.microsoft.com/en-us//library/az4se3k1(v=vs.110).aspx

还支持DateTimeOffset。