我在网站上构建了类似聊天服务的内容,当用户发送消息或收到我在发送或接收消息时为他显示的消息时。
我保存了数据库中的所有消息。
现在问题来自:托管该网站的服务器位于美国,部分用户来自不同国家,时区不同。
所以我用户发送了一条消息并且他在埃及,例如,他会看到他6小时前发送的消息现在不是他刚发送的消息:)
我想知道facebook,twitter和stackoverflow等网站如何解决这个问题。
注意:
- 我在注册时没有询问用户他的时区或国家
- 我正在使用ASP.Net MVC
- 我正在使用timeago jquery插件来显示很好的格式化日期。
答案 0 :(得分:1)
如果时间戳存储为Coordinated Universal Time (UTC),那么您应该根据用户的本地时区格式化数据库中的值。
例如,假设数据库中的时间戳以毫秒为单位(例如1309365893296),那么在javascript中,您可以执行以下操作将其转换为用户的本地时区:
var localtime = new Date(1309365893296);
答案 1 :(得分:0)
我猜最好的方法是在用户提交文本时从用户的PC收集一个DateTime值。
由此,您应该能够根据小时数来确定他们所在的时区。
然后,每当您在应用程序中显示时间戳时,请添加或减去小时数差异。
答案 2 :(得分:0)
您需要做的是使用DateTime.UtcNow
当您向用户显示时间时,您可以使用.ToLocalTime()
关闭变量将其转换为每个用户的本地时区。