这两天做数据传递的时候遇到一个问题:
本来Date类型的一个字段,使用JSONObject.valueToString(resultMap)将数据传递到jsp页面时,由于时间变成了字符串类型,显示格式为“Tue Jul 31 00:00:00 CST 2018”。
以上显示先不说格式对不对,首先时间显示就是错误的(有时差)。先后尝试过Date.parse(timeStr);new Date(timeStr);new Date(Date.parse(new Date(timeStr.replace(/-/g,"/"))));将其转化为时间类型,结果类型转化成功了,但时差问题并没有解决。经过查找和分析,最终发现js接收java后台的时间数据时,时间格式的CST时间,而js默认的是GMT时间格式,js new出来的时间对象会比java传来的数据多了14个小时。即GMT时间=CST时间+14个小时。
解决方法,进行以下处理:
function dateToGMT(strDate){
var dateStr=strDate.split(" ");
var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
var date = new Date(Date.parse(strGMT));
return date;
}