Pojo里面用的是java.util.Date;MySQL里面用的是datetime。因为表单提交所有数据都是以字符串的形式传输(如果说错请大神指正),所以在后台接收到前台传来的日期字符串是要转换一下。
/** * 字符串转换成日期 * @param str * @return date */ public static Date StrToDate(String str) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = format.parse(str); } catch (ParseException e) { e.PRintStackTrace(); } return date; } 这样就能正确插入数据库中。但是当从数据库中取出来的时候,显示总是不正常的。控制台输出是这样子的:Mon Feb 13 18:10:00 CST 2017,浏览器输出是这样子的:1486980600000
通过
/** * 字符串转换成日期 * @param str * @return date */ public static Date StrToDate(String str) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = format.parse(str); } catch (ParseException e) { e.printStackTrace(); } return date; }转码时候,控制台输出是这样子的:2017-02-13 18:10:00,然而浏览器输出还是这样子的:1486980600000
因为整体的转换都是用阿里的fastjson,所以觉得它应该有专门针对Date类型的封装。果然,最后在Pojo的Date上加上@JSONField (format="yyyy-MM-dd HH:mm:ss") 注解,比如:
@JSONField (format="yyyy-MM-dd HH:mm:ss") //日期格式可以自己设定
private Date birthday;
前台显示了我想要的样子:2017-02-13 18:10:00。
还有很多的序列化我没看懂。有兴趣的可以看一下。
新闻热点
疑难解答