使用用户本地日期时间保存日期时间问题

时间:2011-06-29 16:40:38

标签: c# javascript jquery asp.net asp.net-mvc-3

我在网站上构建了类似聊天服务的内容,当用户发送消息或收到我在发送或接收消息时为他显示的消息时。

我保存了数据库中的所有消息。

现在问题来自:托管该网站的服务器位于美国,部分用户来自不同国家,时区不同。

所以我用户发送了一条消息并且他在埃及,例如,他会看到他6小时前发送的消息现在不是他刚发送的消息:)

我想知道facebook,twitter和stackoverflow等网站如何解决这个问题。

注意:
- 我在注册时没有询问用户他的时区或国家 - 我正在使用ASP.Net MVC - 我正在使用timeago jquery插件来显示很好的格式化日期。

3 个答案:

答案 0 :(得分:1)

如果时间戳存储为Coordinated Universal Time (UTC),那么您应该根据用户的本地时区格式化数据库中的值。

例如,假设数据库中的时间戳以毫秒为单位(例如1309365893296),那么在javascript中,您可以执行以下操作将其转换为用户的本地时区:

var localtime = new Date(1309365893296);

答案 1 :(得分:0)

我猜最好的方法是在用户提交文本时从用户的PC收集一个DateTime值。

由此,您应该能够根据小时数来确定他们所在的时区。

然后,每当您在应用程序中显示时间戳时,请添加或减去小时数差异。

答案 2 :(得分:0)

您需要做的是使用DateTime.UtcNow

存储所有时间戳

当您向用户显示时间时,您可以使用.ToLocalTime()关闭变量将其转换为每个用户的本地时区。