今天一个前端同事问我Java的时间的时区是什么,我告诉他是系统时区,他说怎么JavaScript解析出来是有问题的,后端返回给他的是这样一个数据:
好奇心驱使,去查了下这个CST是什么意思。一查才知这个CST表示四个意思:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00
也就是说也有中国标准时间的意思,应该是没有问题的。
有问题的是如果用这个数据返回给JavaScript的时候,再反向解析:
结果竟然比原数据多了14个小时,因为客户端JavaScript则默认采用的是美国的中部时间,所以加6个小时,而后转成中国时间的时候又加了8个小时。
我告诉他的方案是让后端修改,改成yyyy-MM-dd HH:mm:ss格式的,这样在JavaScript中转换的时候就没事了。
其实这也是一个职责划分的问题,当我们向外提供接口或者数据的时候,应该是确定的、没有歧义的。
领取专属 10元无门槛券
私享最新 技术干货