经历了前端把Date转换为yyyy-MM-dd HH:mm:ss问题,现在又遇到一个棘手的问题,就是从mysql中取出的时间转换为上面的那种格式,于是我想出从后台转换成功后再去前台显示,毕竟前台的代码是这样的
dataNewObj.startTime = userInfo[i].startTime.replace(/-/g,'/'); dataNewObj.endTime = userInfo[i].stopTime.replace(/-/g,'/');
然后开启了我走上date不归路的第二段,先把时间取出来看看
Date date1=list.get(0).getStopTime(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str1=sdf.format(date1);
输出的str1是这样的:
2021-09-27 21:40:00
这不真正是我想要的格式么!
鉴于昨天我成功的把String这个类型的字符串成功转换成相同的字符串之后,我直接调用StringtoDate函数,转换成Date,再进行存储!
list.get(0).setStopTime(DateUtil.stringToDate(str1,DateUtil.DEF_DATE_FORMAT_STR));
但是没有成功,于是我打断点调试,发现转换失败,是下面这样的:
Mon Sep 27 21:40:00 CST 2021
输出前端的数据是这样的:
为什么呢?昨天我明明是相同的字符串,一样的调用,为什么这个转换还是从mysql中取出来的一样呢?
这个问题丞待解决,待我回头研究研究!
然后我又想我这一条数据取出来改变格式,再存进去,那很多条呢?太占内存且效率低!
于是改变思路,在前端把数据改成想要的时间格式,在项目中我发现已经写好了的时间格式转换的代码:
/** * 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式 * @param time */ function timeFormat(time) { var d = new Date(time); var year = d.getFullYear(); //年 var month = d.getMonth() + 1; //月 var day = d.getDate(); //日 var hh = d.getHours(); //时 var mm = d.getMinutes(); //分 var ss = d.getSeconds(); //秒 var clock = year + "/"; if (month < 10) clock += "0"; clock += month + "/"; if (day < 10) clock += "0"; clock += day + " "; if (hh < 10) clock += "0"; clock += hh + ":"; if (mm < 10) clock += '0'; clock += mm + ":"; if (ss < 10) clock += '0'; clock += ss; return (clock); }
于是我把刚开始的前端代码做了以下改变
dataNewObj.startTime = timeFormat(userInfo[i].startTime).replace(/-/g,'/'); dataNewObj.endTime = timeFormat(userInfo[i].stopTime).replace(/-/g,'/');
成功输出了我想要的效果: