太正常的一个需求了,半天查不到解决方案。想到几点
1. 在查询出来后用iterater遍历修改时间
但由于实体类中的time就是date类型,对于想重写入settime无法操作
Iterator<Archive> i=list.iterator();
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd");
Archive archive;
while(i.hasNext()) {
archive=i.next();
archive.setTime(timeformat.format(archive.getTime()));//类型不符
}
此路不通
2.后端不管,在前端操作
<c:forEach items="${mylist}" var="datas">
<tr>
<td id="mytime">${datas.time }</td>
<td>${datas.status }</td>
</tr>
</c:forEach>
function GMTToStr(time){
var date = new Date(time);
let Str=date.getFullYear() + '-' +
(date.getMonth() + 1) + '-' +
date.getDate();
return Str;
}
var time=$("#mytime").text();
$("#mytime").html(time);
这样确实可以把date转换成正常的年月日,但只把foreach循环中的第一项转换成功,其他项还是格林威治时间;原因在于用id选择器选取的元素唯一,所以只有一项有效。那我把js代码插入foreach里?仍然行不通。不管foreach多少次,id选择的任然是列表第一项。
换成class选择器更是荒唐了,因为选取的是所有的项了,无法对应转换,结果为NaN。
此路不通
3.只能把时间换成String类型了。。。。
这样其实改动的代码不多,涉及到时间的操作并不多,无非是插入和覆盖,都与现在的时间有关;把现在的时间格式format一下就可以了。
String Nowtime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
这样不存在转换的问题了。。
以后不再用date类型了。手动狗头;