描述(Description)
最近在用Element的UI框架,需要使用日期控件DateTimePicker
<el-date-picker
v-model="value1"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
使用的是VUE绑定的数据,发现控件显示的和传递到后台的值格式不一致
问题现象(Error)
绑定的参数传递到后台之后报错了,看报错信息才知道这个控件返回的时间格式和显示的不是一样的 ,显示是 yyyy-MM-dd’T’HH:mm:ss ,但是后台传递的是 yyyy-MM-dd’T’HH:mm:ss.SSSZ ,所以使用 new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss”).parse(date) 格式化时就报错了。
源代码(Code)
因为不知道这个UI怎么设置传递参数和界面显示一致,所以只能java写了个日期转换的工具,然后问题就解决了!
工具类如下:
public static Date parse(String date) {
if (date != null) {
try {
if (date.contains("-")) {
if (date.contains(":") && date.contains("T") && date.lastIndexOf("Z") > 0) {
date = date.replace("Z", " UTC");
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z").parse(date);
} else if (date.contains(":") && date.contains("T")) {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(date);
} else if (date.contains(":")) {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
} else {
return new SimpleDateFormat("yyyy-MM-dd").parse(date);
}
}
if (date.contains("/")) {
if (date.contains(":") && date.contains("T") && date.lastIndexOf("Z") > 0) {
date = date.replace("Z", " UTC");
return new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss.SSS Z").parse(date);
} else if (date.contains(":") && date.contains("T")) {
return new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss").parse(date);
} else if (date.contains(":")) {
return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(date);
} else {
return new SimpleDateFormat("yyyy/MM/dd").parse(date);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
这个UI和平时用的 不一样,所以特别记录下使用的过程,以免后续遗忘!
更多的一些工具请看开源代码
(转载本站文章请注明作者和出处 一百零八天)
Show Disqus Comments