前阵子排查个线上问题,同一天的时间在前后端对不上,差整整8小时。翻了半天才定位到一行 new Date()。
坑在于字符串格式不同,引擎理解不一样。new Date(‘2024-01-01’) 是按 ISO 走的,被当成 UTC 零点;new Date(‘2024/01/01’) 却按本地时区算。同一天,解析出来差了8小时,还不报错,安静得要命。
更阴的是走 JSON 序列化。时间戳从服务端吐出来再反序列化,前后端时区一旦错配,跨时区服务的数据就对不上了,而且这种错位不抛异常,等发现时已经脏了一堆。简单说
治本的办法就一条:传输层统一用带时区的时间字符串或者干脆用时间戳,时区转换只在显示层做。别让解析器替你偷偷做隐式转换,那玩意儿最会背刺。