controller配置@InitBinder来进行格式化。
评估: 搞清楚,@InitBinder使用来处理前端到后台字段不会字段转换的问题,不应该用在这里,所以pass掉。
要给报文格式化,加上这2个注解即可。@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date createDate;
@JsonFormat与@DateTimeFormat注解的区分和使用
时间问题一直是个比较头疼的问题。 以后台为基准参考:我们想要在后台对从数据库、第三方API接口获取到的时间进行“格式化”需要用到【@JsonFormat】注解;我们通过后台给前台传递指定格式的时间也是通过【@JsonFormat】;如果是后台接收前台传来的时间进行格式化需要用到【@DateTimeFormat】。
@JsonFormat是jackson包的。
2.@JsonFormat代码示例
1.使用maven引入
//timezone:是时间设置为东八区,避免时间在转换中有误差
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createDate;
从前台页面将时间类型的数据传入数据库中,这个时候前台传递给后台的时间格式同样是不一致的,我们通过使用@DataTimeFormat注解就可以很好的解
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone=“GMT+8”)
private Date createTime;@DateTimeFormat(pattern = “yyyy-MM-dd”)
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
private Date symstarttime;
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
User user = new User();
String s = gson.toJson(user);
//出餐格式化注解
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JSONField(format = "yyyy-MM-dd HH:mm:ss") //建议这种
由于@RequestBody注解先将json字符串转换成对应的Vo对象,Vo对象中的字段上添加的注解再生效,@DateTimeForma
从数据库中获取日期类型的数据传到前台展示的是个时间戳类型并且时间少了八个小时,我们通过使用@JsonFormat注解就可以很好的解决后台到前台时间格式保持一致的问题。
从前台页面将时间类型的数据传入数据库中,这个时候前台传递给后台的时间格式同样是不一致的,我们通过使用@DataTimeFormat注解就可以很好的解决这个问题。
使用详情:
1. @JsonFormat