首页 > 解决方案 > Socket IO 日期变成字符串

问题描述

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

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

它适用于双方,即当我将日期从客户端发送到服务器时,它也成为服务器端的字符串。

有没有办法避免立即转换并将其用作日期?

标签: javascriptsocket.io

解决方案


不可以。如果您通过网络发送数据,则必须对其进行序列化。它在这里自动转换为 a string,但没有什么禁止您首先将其转换为您想要的任何其他格式,然后在另一端执行相反的操作。无需太多麻烦,您几乎可以发送任何可转换为 JSON 的内容。

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

您发送的任何内容都将首先转换为JSON,它只能存储非常有限的元素范围。任何东西都将被转换为原始类型,如stringor number,或者 JSON 支持的仅有的两种非原始类型,即objects 和arrays。

所以几乎所有不是原始的和不是数组的东西都会被转换成一个对象,只保留可序列化的属性。这是通过调用toJSON您要发送的数据的属性来完成的。在您的情况下,toJSONa 的方法Date返回他的字符串表示形式,这就是最终发送的内容。

const date = new Date();    // Your date
console.log(date.toJSON()); // What will be sent


推荐阅读