如果不覆盖,日期的这个toString方法就会导致传递到后台的是一个混乱的字符串 比如 Thu Oct 17 2019 10:51:38 GMT+0800 (中国标准时间),无法解析
<label><span>起始时间</span><input ng-model="f_data.startTime" type="datetime-local" step=1 class="form-control" ></label>
<label><span>结束时间</span><input ng-model="f_data.endTime" type="datetime-local" step=1 class="form-control" ></label>
function getPara(name) {
var reg = new RegExp("\\b" + name + "=([^&]*)(&|$)", "i");
var r = location.search. match(reg);
if (r &&r.length>0) return decodeURI(r[1]);
}
function formatter(d){
return d&&d.toLocaleDateString()+' '+d.toTimeString().substr(0,8) ||'';}
Date.prototype.toString=function () {
return formatter(this);
};
function eq(a,b) {
if(typeof a =="object" ){
return typeof b =="object" && JSON.stringify(a)==JSON.stringify(b);
}
return a==b;
}
然后在后端上这样进行解析
public org.springframework.core.convert.converter.Converter<String, Date> dateConverter(){
return new Converter<String, Date>(){
@Override
public Date convert(String source) {
try {
if(source==null||source.length()==0)
return null;
// type="datetime-local" step=1 数据的格式是 "2019-10-16T13:00"
if(source.contains("/"))
source=source.replace("/","-");
if(source.contains("T"))
source=source.replace("T"," ");
if(source.length()>19)
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(source);
if(source.length()>16)
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(source);
if(source.length()>10)
return new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(source);
else if(source.length()>8)
return new SimpleDateFormat("yyyy-MM-dd").parse(source);
else
return new SimpleDateFormat("HH:mm:ss").parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
throw new RuntimeException(source+"\t格式既不是时间,也不是日期,或者完整的日期时间");
}
};
}