Javascript 套接字IO日期变为字符串

Javascript 套接字IO日期变为字符串,javascript,socket.io,Javascript,Socket.io,我尝试从服务器向客户端发送一个日期,尽管在客户端,日期变为字符串,我必须始终在字符串上使用new date(),将其再次转换为日期 此外,当我通过套接字将事件从客户机发送到服务器,然后服务器通过回调将日期返回给客户机时,它也会变成一个字符串 它对双方都有效,也就是说,当我将日期从客户端发送到服务器时,它在服务器端也会变成字符串 是否有办法避免转换并立即将其用作日期?否。如果通过网络发送数据,则必须将其序列化。它在这里自动转换为字符串,但没有任何东西禁止您先将其转换为任何其他格式,然后在另一端执行

我尝试从服务器向客户端发送一个日期,尽管在客户端,日期变为字符串,我必须始终在字符串上使用
new date()
,将其再次转换为日期

此外,当我通过套接字将事件从客户机发送到服务器,然后服务器通过回调将日期返回给客户机时,它也会变成一个字符串

它对双方都有效,也就是说,当我将日期从客户端发送到服务器时,它在服务器端也会变成字符串


是否有办法避免转换并立即将其用作日期?否。如果通过网络发送数据,则必须将其序列化。它在这里自动转换为
字符串
,但没有任何东西禁止您先将其转换为任何其他格式,然后在另一端执行相反的操作。无需太多麻烦,您几乎可以将任何可转换为JSON的内容发送出去

发生的情况是,要进行传输,您要发送的任何数据都必须被删除。socket.io(以及一般的JS)的选择方法是使用JSON标准

您发送的任何内容都将首先转换为,它只能存储非常有限的元素范围。任何内容都将转换为基本类型,如
string
number
,或JSON支持的两种非基本类型,即
对象
s和
数组
s

因此,几乎所有非原语和非数组的内容都将转换为对象,只保留可序列化属性。这是通过调用要发送的数据的
toJSON
属性来完成的。在您的例子中,
Date
toJSON
方法返回其字符串表示形式,这就是最后发送的内容

const date=new date();//你的约会对象

console.log(date.toJSON());//将发送什么
我认为这并不能回答问题,因为像数字和对象这样的东西是作为数字和对象而不是字符串从Socket.IO出来的。你能编辑你的答案来解释日期的不同吗?在编辑之前,这个问题包含了比现在更多的标签,使它看起来比现在更宽泛。此外,在答案被接受后,您编辑了标签,使其看起来确实过于宽泛。我还要补充一个解释。