Javascript 聊天在服务器和客户端上的日期.now()不同

Javascript 聊天在服务器和客户端上的日期.now()不同,javascript,node.js,date,time,chat,Javascript,Node.js,Date,Time,Chat,我已经创建了一个与node.js和socket.io的聊天 当用户发送消息时,我直接将其插入DOM并将消息发送到服务器,这样就可以将消息发送到所有其他客户端 问题在于,服务器上使用Date.now()设置的时间戳似乎与客户机上使用完全相同的命令设置的时间戳不同 这使得接口有点奇怪,因为在稍后的时间点发送的消息可能会在先前发送的消息之前显示时间戳 一种解决方案是计算用户加入聊天室时的时差,并在添加新消息时减去该时差,但这真的是必要的还是解决此问题的常用方法?这是否也是处理时区等问题的解决方案?客户

我已经创建了一个与
node.js
socket.io
的聊天

当用户发送消息时,我直接将其插入DOM并将消息发送到服务器,这样就可以将消息发送到所有其他客户端

问题在于,服务器上使用
Date.now()
设置的时间戳似乎与客户机上使用完全相同的命令设置的时间戳不同

这使得接口有点奇怪,因为在稍后的时间点发送的消息可能会在先前发送的消息之前显示时间戳


一种解决方案是计算用户加入聊天室时的时差,并在添加新消息时减去该时差,但这真的是必要的还是解决此问题的常用方法?这是否也是处理时区等问题的解决方案?

客户端和服务器之间可能存在不同的时区。它不会与世界各地的多个用户一起工作。这一条将很有帮助:


此外,如果您立即将时间戳追加到DOM,然后从服务器再次获得日期,那么在任何情况下都会有差别,因为您必须考虑请求到达服务器的时间。< / P>不同计算机上的时钟将不同——在服务器接收消息时,可能总是使用时间戳吗?时差方法会有所帮助,但由于从客户端到服务器传递消息的时间不是恒定的,这一事实使时差方法变得复杂。但我想在将用户的消息发送到服务器之前附加它。像Facebook这样的网站在聊天时是如何做到的?我认为客户端会向服务器发送消息,接收服务器时间戳,然后每个人都会看到它们到达服务器的时间。

Date.now()
返回一个Unix时间戳,它是无时区的。@robertklep这不取决于每个用户的浏览器时区吗?另外,在节点上,它不取决于服务器的配置吗?不,时间戳总是相对于UTC。另请参见。@robertklep其中有一条评论(但不是可接受的答案):“如果两台计算机都正确设置了时钟,并且设置了正确的时区和UTC值,那么它们应该返回相同的值。当然,这是一个很大的如果。”是的,这里的主要问题是没有不同的时区,但是时钟是不同步的:例如,浏览器的计算机说它是9:23(相对于UTC),服务器说它是9:18(相对于UTC)。