1.Java后台格式化方式
//格式化日期 pattern
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH24小时制、hh12小时制
String eventDate;
Date date = null;
eventDate = formatter.format(entranceGuardUploadEvent.getEventDate());//Date类型转String类型
try {
date = formatter.parse(eventDate); //String转Date 不处理异常会报错
} catch (ParseException e) {
e.printStackTrace();
}
2.从页面直接获取Date类型
(1)方法1(如果需要获取不同的格式,这种方法不适用,例如:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");</span>
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
)
在Controller中重载InitBinder方法
实现:
@InitBinder
public void InitBinder(WebDataBinder dataBinder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
(2)方法2使用注解(在Javabean特定的属性自定义日期格式),此种方法失败,自行研究
@JSONField(format = "yyyy-MM-dd HH:mm:ss") //取日期时使用
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//存日期时使用
private Date startTime;
ps:格式化数字使用@NumberFormat注解
(3).也是使用@InitBinder注解
首先,自定义一个类,可转换两种格式
public class DateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(text);
} catch (ParseException e) {
format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse(text);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
setValue(date);
}
}
然后,实现initBinder方法,把这个方法放在BaseController中即可实现全局方法
@InitBinder
public void initBinder(WebDataBinder binder){
binder.registerCustomEditor(Date.class, new DateEditor());
}
ps:这个项目中遇到yyyy-MM-dd 和
yyyy-MM-dd HH:mm:ss在一个页面中转换,用第一种方法直接实现initBinder方法会出错,所以使用了第三种方法!!!