Node.js中日期发送至客户端后格式莫名变化的原因咨询
问题原因解析
服务端打印的格式是Date对象的
toString()输出:在Node.js里直接打印Date对象时,JS会自动调用它的toString()方法,输出带本地时区信息的人类可读格式(也就是你看到的Wed Jul 05 2023 00:00:00 GMT-0500 (Central Daylight Time))。发送到客户端时触发了JSON序列化:Node.js在把数据返回给客户端(比如用
res.send()或res.json())时,会自动把JS对象序列化成JSON格式。但JSON标准里没有专门的Date类型,所以序列化过程中会调用Date对象的toISOString()方法,将其转换为UTC时区的ISO 8601标准字符串(即2023-07-05T05:00:00.000Z),并作为字符串包裹在引号里传输到客户端。客户端收到的是序列化后的字符串:客户端拿到的已经不是原始的Date对象,而是JSON解析后的字符串,所以打印出来就是带引号的ISO格式内容。
内容的提问来源于stack exchange,提问作者Adam Prime
相关产品推荐
相关产品推荐

