首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在聊天系统中保持时间戳的准确性-使用timeago jQuery插件

问在聊天系统中保持时间戳的准确性-使用timeago jQuery插件
EN

Stack Overflow用户
提问于 2012-06-01 12:05:51
回答 2查看 555关注 0票数 0

我正在创建一个基于web的聊天/消息系统。由于聊天可以保存,因此聊天的每条消息和发送每条消息的时间都存储在服务器上的mysql数据库中。时间戳以UTC时间的mysql日期时间格式存储,并在服务器上生成时间戳。

当从服务器检索消息及其附带的时间戳时,我使用jQuery timeago plugin并格式化时间戳,以"1分钟前“、"3天前”等形式显示。

这样做的问题是,"timeago“时间是相对于用户机器的时间计算的。例如,假设您收到一条消息,该消息实际上是在2秒前发送的。如果您的计算机的时间比服务器的时间快3分钟,则此消息的时间显示为"3分钟前“。

对于始终向用户呈现准确时间的策略,您有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 12:32:35

首先,你确定你想要聊天系统如此精确的时间同步吗?如果某人的时钟快或慢,那是他/她的问题,不是你的问题。

无论如何,您可以将差异发送给用户。time-delta可用于从当前时间创建时间戳,并将其放入title属性中。

一种更简单的方法是只发送一条消息,说明“这条消息是‘刚才’发送的”,并相应地构造title属性。

票数 0
EN

Stack Overflow用户

发布于 2012-06-01 12:32:49

你可以修改源代码。请参阅https://github.com/rmm5t/jquery-timeago/blob/master/jquery.timeago.js中的第146行。使其可以选择性地与覆盖new Date()的用户指定的"now“一起使用。然后让服务器告诉客户端服务器时间中的"now“是什么。

或者,有一种方法可以在不修改timeago的源代码的情况下做到这一点:

让服务器告诉客户端它的当前时间,然后计算该时间与客户端时间之间的差值:

代码语言:javascript
复制
var timeDelta = serverNow - clientNow

然后,在将每条消息传递给timeago之前,将timeDelta添加到每条消息的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10844267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档